JS &(按位与) 问题求解

直接上代码吧,

clipboard.png

上述代码得到的 ss 是

clipboard.png

下述代码,得到的 ss 是空,求大神解释

clipboard.png

PS:

clipboard.png

为什么这里得到的是负值?
崩~~

阅读 2k
2 个回答

你需要了解js位运算符的计算方法。
按位与先将两个数字转换为32位的二进制形式,然后上下对齐,按照1+1=1,1+0=0,0+0=0的逻辑计算。
比如:

var iResult = 25 & 3;
alert(iResult);    //输出 "1"

原因是:

 25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001

所以同理,63215 的二进制形式是0000 0000 0000 0000 1111 0110 1110 1111

num每次循环时,二进制形式分别是1,10,100,1000等等(前边的0没有补齐),可以看出,当i=2是,num为100,与63215计算的二进制结果还是100;当i=5时,num为10000,与63215计算的二进制结果是0,这就是为什么数组中没有5的原因,9和12也是类似。
第二个例子,2147483648的二进制形式是1000 0000 0000 0000 0000 0000 0000 0000,剩下的自己算吧。

但是做位运算的时候,是以32位带符号的整数进行运算的,超出会舍弃,所以安全数字应该在 -2147483648 2147483647之间

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题