bitmask和javascript的问题

时间:2011-04-18 16:33:53

标签: javascript bitmask

我不确定我是否做错了什么,但我似乎无法使用这个简单的javascript工作:

var a = 0;

a |= (1 << 31);

alert(a);

a |= (1 << 30);

alert(a);
你可以在这里看到它 http://jsfiddle.net/qPEVk/

shoudl不是3221225472?

感谢,

2 个答案:

答案 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。