谁能给我解释一下为什么会出现下面的代码:
var a = 0xFFFFFFFF;
a &= 0xFFFFFFFF;
a += 1;
alert( "a = " + a );
var b = 0xFFFFFFFF;
b += 1;
alert( "b = " + b );
返回 a 和 b 的不同值?
因为 0xFFFFFFFF 和 0xFFFFFFFF 应该等于 0xFFFFFFFF,所以这两段代码都应该返回 0x100000000。相反,a 获得 0 的值,b 获得 0x100000000 的值。
最佳答案
JS 按位运算符返回一个有符号 32 位整数。 0xFFFFFFFF 被转换为 -1,加 1 得到 0。
关于javascript - 按位运算符改变算术结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339538/