我不确定我是否做错了什么,但我似乎无法使用这个简单的javascript工作:
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
你可以在这里看到它
http://jsfiddle.net/qPEVk/
shoudl不是3221225472?
感谢,
乔
答案 0 :(得分:4)
技术上没有任何问题,预计会出现负数,因为它正在转换为32位签名的int。
基本上,前导位表示“消极或正面”,因此当您翻转它时(使用1<<31
),您会得到一个负数。
您的位掩码仍然可以像高达 32位一样完全正常工作。在JavaScript中不能超过32位的位掩码。
答案 1 :(得分:0)
var a = 0;
var b;
a |= (1 << 31);
b = a
a |= (1 << 30);
b += a
alert(b);
在上述情况下,b最终将为-3221225472。