我不确定我是否做错了什么,但我似乎无法让这个简单的 JavaScript 工作:
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
你可以在这里看到它 http://jsfiddle.net/qPEVk/
不应该是3221225472吗?
谢谢,
乔
最佳答案
从技术上讲,这没有任何问题,并且预计会出现负数,因为它正在转换为 32 位有符号 int。
基本上,前导位表示“负数或正数”,因此当您翻转它(使用 1<<31
)时,您会得到一个负数。
您的位掩码在最多 32 位上仍然可以像您期望的那样工作。 JavaScript 中的位掩码不能超过 32 位。
关于javascript - 位掩码和 javascript 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5705990/