首页 > 试题广场 >

假设有如下代码,那么a(10)的返回结果是?

[单选题]
假设有如下代码,那么a(10)的返回结果是?
function a(a){
    a^=(1<<4)-1;
    return a;
}


  • 5
  • 10
  • 15
  • 16
答案是A。
1<<4   左移相当于1*2^4=16
a^=16-1=15
a=a^15=10^15
^ 异或运算:
10的二进制00001010
15的二进制00001111
========>00000101  转成十进制:5
(按位异或运算,同为1或同为0取0,不同取1) 
编辑于 2017-05-24 14:47:50 回复(13)
<< 表示左移,先化为2进制,1为01,然后左移4位,成010000,再化为10进制,10000(二进制) = 16(十进制)。 接着a = a ^15 而a = 10,符号^表示异或,也就是比较对应的二进制位是否相同,相同为0,不同为1。 10的二进制 => 1010 15的二进制 => 1111 通过异或运算可以得到 0101 再转换成十进制即是5
发表于 2018-04-07 23:05:04 回复(7)
var a = 10;
a ^= (1<<4) - 1;

1<<4左移4位,即1*Math.pow(2, 4) == 16,则a ^= 15

1015的异或运算 1111 ^ 1010 ......... 0101

0101二进制表示5,所以a的值位5

发表于 2022-06-15 21:15:32 回复(0)
按位与、或、异或等运算参考
http://blog.sina.com.cn/s/blog_618199e60100ka5b.html
发表于 2017-05-10 11:10:58 回复(0)
a=1111^1010=0101=5
发表于 2017-05-09 17:01:11 回复(0)
1<<4,1右移4位10000,即16,原式为a^=15,等于a=a^15=5.答案为5.
发表于 2017-02-14 11:04:23 回复(0)
答案是C,<<为左移运算符,0001左移四位后是10000,是16,16-1=15,故选C

编辑于 2017-03-24 21:13:50 回复(0)
发表于 2017-07-13 17:40:40 回复(1)
a^=15
a=10
0000 1010 ^ 0000 1111
相同为0不同为1

发表于 2016-11-29 16:22:42 回复(0)
这道题<<是难点
发表于 2018-04-21 18:25:41 回复(0)
新手 第一次见<< 啥玩意呀
发表于 2019-07-08 19:42:36 回复(2)
我就想问,现实开发中,有用到吗?具体事例是什么?
发表于 2017-03-24 23:59:38 回复(1)
1<<4 0001变成00010000=16, 16-1=15, 10:1010 15:1111 1010^1111=0101 即5
发表于 2021-12-29 15:48:01 回复(0)
<< 表示左移,先化为2进制,1为01,然后左移4位,成010000,再化为10进制,10000(二进制) = 16(十进制)。 接着a = a ^15 而a = 10,符号^表示异或,也就是比较对应的二进制位是否相同,相同为0,不同为1。 10的二进制 => 1010 15的二进制 => 1111 通过异或运算可以得到 0101 再转换成十进制即是5
发表于 2020-05-17 09:24:27 回复(1)
(1<<4) = 16(0001 =》 1 0000)(16,8,4,2,1)
a^=15即 a = a ^ 15;而a=10;所以a = 10^15 = 1010 ^ 1111 = 0101 = 5;
发表于 2017-04-17 22:19:26 回复(0)
首先1的二进制是0000 0001'右移四位后变成0001 0000'那么此时就是166
发表于 2017-03-21 22:13:33 回复(0)
1<<4
==>二进制的1(0000 0001)
==>左移4位 (0000 1000)
发表于 2022-11-01 14:39:43 回复(0)
①1<<4:1转换为二进制00000001左移4位=>00010000  
②减去1为 00001111
③00001111 ^ (抑或:相同为0不同为1) 00001010(10的二进制)=>00000101 = 5
发表于 2022-09-20 10:12:29 回复(0)
1<<4-1        ===>        二进制:1111        ===> 15
10            ===>           二进制:1010        ===>  10

二进制取异:0101 ===> 5
发表于 2021-10-16 17:24:42 回复(0)
见基础一按位运算符
发表于 2021-10-13 14:55:24 回复(0)