簡體   English   中英

Javascript左移運算符如何工作?

[英]How does the Javascript left shift operator work?

我注意到Java語言有一個奇怪的行為:執行1967779 << 11我得到一個否定的結果:-264955904

但是,如果我在Python解釋器中運行同一行,則會得到正確的答案:4030011392

請注意,Firefox和Chrome的Javascript控制台都返回了相同的負數,因此Javascript本身(而不是引擎)肯定是一個問題。

為什么我在Python和Javascript之間得到了不同的值? 我該怎么辦才能解決此問題? Javascript左移運算符如何工作?

因為您的JavaScript引擎中此按位操作的返回值是一個帶符號的32位整數,只能表示-2147483648至2147483647之間的數字。

通過設置信號位 (32位鏈中最高相關的位)(2 ^ 31),可以控制整數是負數還是正數。 如果0為正,如果1為負。

因此,碰巧4030011392大於2147483647,這意味着在此過程中信號位被“偶然”設置為1,從而導致該數字變為負數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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