[英]16-bit value becomes negative when bit shifting in JavaScript
當我嘗試移位16位值時,我看到一些奇怪的行為
0xF << 4 == 0xF0 // true
0xFF << 8 == 0xFF00 // true
0xFFF << 12 == 0xFFF000 // true
0xFFFF << 16 == 0xFFFF0000 // false
最后一個為真的原因是0xFFFF << 16
實際上給出了值-65536
。 當0xFFFF0000
是JavaScript中的有效數字時,為什么會發生這種情況
因為Javascript使用帶符號的32位整數數字進行按位運算。
這意味着,數字可能是負數。
要獲得所需的輸出,您必須使用>>> 0
刪除符號。
(0xFFFF << 16) >>> 0 == 0xFFFF0000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.