我正在javascript中创建位掩码。它适用于位0到14。当我只将位15设置为1.它产生的整数值为“-2147483648
”而不是“2147483648
”。我可以通过返回硬编码的“2147483648
”来做一个特殊的案例,第15位,但我想知道这样做的正确方法。在javascript中使用按位运算符
示例代码:
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));
}
上面的代码返回-2147483648当hex_lower_word是“为0x0”和hex_upper_word是“为0x8000”,而不是2147483648
你的意思是MSB 15或LSB 15? – ATOzTOA
Javascript按位操作的结果总是[带符号的32位整数](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers)。 – duskwuff