js中两个数值相与问题
想问下js中整型位数是多少,64位吗。为何将8589934592与64491553279相与后结果为0,不应该是8589934592吗?
------解决方案--------------------js 在进行二进制运算时,使用 32 位二进制整数,由于 js 的整数都是有符号数,最高位0表示正数,1表示负数,因此,js 二进制运算中使用的整数表达范围是 -Math.pow(2,31) ~ Math.pow(2,31)-1 // -2147483648 ~ 2147483647
对于32 位二进制正整数来说,其模为 Math.pow(2,32) = 4294967296
32 位正整数最大表达范围是 4294967296 - 1 ,达到 4294967296 这个值就要进位到33位,33 位是溢出位被丢弃,只得到32 个0
你可以去看看这个说的很明白:javascript 二进制运算技巧解析