2011-08-05 39 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位。我不知道当问它处理更大的值时,行为是如何定义的。

相关问题