我不知道如果我做錯了什麼,但我似乎無法有這個簡單的JavaScript來的工作:問題掩碼和javascript
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
,你可以在這裏看到它 http://jsfiddle.net/qPEVk/
shoudln't it 3221225472?
感謝,
喬
我不知道如果我做錯了什麼,但我似乎無法有這個簡單的JavaScript來的工作:問題掩碼和javascript
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
,你可以在這裏看到它 http://jsfiddle.net/qPEVk/
shoudln't it 3221225472?
感謝,
喬
有技術上沒有錯,和一個負數,預計因爲它強制轉換爲32位有符號整數。
基本上,前位的意思是「陰性或陽性」,所以,當你翻轉它(與1<<31
)你會得到一個負數。
您的位掩碼仍然可以像您期望的高達 32位一樣工作。 JavaScript中不能超過32位位掩碼。
var a = 0;
var b;
a |= (1 << 31);
b = a
a |= (1 << 30);
b += a
alert(b);
在上述情況下,B最終會作爲-3221225472。
@cwolves ...很好的解釋! – 2011-04-18 16:43:27
@Johnathan ......看看這個帖子... http://stackoverflow.com/questions/1908492/unsigned-integer-in-javascript – 2011-04-18 16:44:46
但第二警報給了我一個奇怪的號碼,我應該把它轉換轉正通過郵寄發送? – Jonathan 2011-04-18 16:45:02