簡體   English   中英

在JavaScript中進行位移時,16位值變為負值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM