你需要了解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,剩下的自己算吧。
你需要了解js位运算符的计算方法。
按位与先将两个数字转换为32位的二进制形式,然后上下对齐,按照
1+1=1,1+0=0,0+0=0
的逻辑计算。比如:
原因是:
所以同理,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
,剩下的自己算吧。