2011-04-18 68 views

回答

4

有技術上沒有錯,和一個負數,預計因爲它強制轉換爲32位有符號整數。

基本上,前位的意思是「陰性或陽性」,所以,當你翻轉它(與1<<31)你會得到一個負數。

您的位掩碼仍然可以像您期望的高達 32位一樣工作。 JavaScript中不能超過32位位掩碼。

+0

@cwolves ...很好的解釋! – 2011-04-18 16:43:27

+1

@Johnathan ......看看這個帖子... http://stackoverflow.com/questions/1908492/unsigned-integer-in-javascript – 2011-04-18 16:44:46

+0

但第二警報給了我一個奇怪的號碼,我應該把它轉換轉正通過郵寄發送? – Jonathan 2011-04-18 16:45:02

0
var a = 0; 
var b; 
a |= (1 << 31); 
b = a 
a |= (1 << 30); 
b += a 
alert(b); 

在上述情況下,B最終會作爲-3221225472。