我正在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