2011-08-05 66 views

回答

2

它看起來像我超過了JavaScript的最大整數值。 JavaScript整數支持的最大值爲2^53。

UPDATE:

我在這裏的最初的反應是不正確的 - 問題不在於JavaScript的最大整數值,它的每個操作數由符號運算處理的最大值:

var biggest = 4294967291; // maximum 32 bit unsigned integer 
alert(biggest & 1); // alerts 1 
alert((biggest + 1) & 1); // alerts 0 

快樂編碼!

5

Bitwise operators在JavaScript轉換操作數符號的32位整數(從天然IEEE 754浮點數號碼存儲在)。

+0

像[bigInt.js](http://www.leemon.com/crypto/BigInt.html)這樣的庫在這裏可能會有幫助,雖然我沒有親自嘗試過。 – darioo

+1

這意味着您不能對大於(大約)20億或低於(大致)-2億的數字執行任何雙向操作。如果你這樣做,行爲沒有被定義。 –

+0

其實行爲是明確的。從「JavaScript:The Defenitive Guide」(第73頁):「如果按位運算符的操作數不是整數或太大而不適合32位整數表示形式,則只需將操作數強制爲32位整數任何操作數的小數部分或32位以外的任何位「。 –

0

位運算符處理最大32位。我不知道當問它處理更大的值時,行爲是如何定義的。

相關問題