【发布时间】:2013-02-04 19:30:51
【问题描述】:
我正在用 javascript 创建一个位掩码。它适用于第 0 位到第 14 位。当我仅将第 15 位设置为 1 时。它会产生“-2147483648”的整数值,而不是“2147483648”。我可以在这里通过返回硬编码的“2147483648”来做一个特殊情况的破解,但我想知道正确的做法。
示例代码:
function join_bitmap(hex_lower_word, hex_upper_word)
{
var lower_word = parseInt(hex_lower_word, 16);
var upper_word = parseInt(hex_upper_word, 16);
return (0x00000000ffffffff & ((upper_word<<16) | lower_word));
}
当 hex_lower_word 为“0x0”且 hex_upper_word 为“0x8000”而不是 2147483648 时,上述代码返回 -2147483648
【问题讨论】:
-
您是指 MSB 15 还是 LSB 15?
-
Javascript按位运算的结果总是signed 32-bit integers。
标签: javascript