我不确定我是否做错了什么,但我似乎不能有这个简单的javascript工作:
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
可以在这里看到http://jsfiddle.net/qPEVk/
应该是3221225472吗?
谢谢,
乔
从技术上讲,这没有什么问题,因为它将转换为32位有符号整型,因此预计会出现负数。
基本上,前导位表示"负或正",所以当你翻转它(与1<<31
)时,你得到一个负数。
你的位掩码仍然会像你期望的那样在上工作,直到 32位。JavaScript中不能超过32位掩码
var a = 0;
var b;
a |= (1 << 31);
b = a
a |= (1 << 30);
b += a
alert(b);
在上面的例子中,b将以-3221225472结束。