Number对象的二进制数学限制为32位?

时间:2014-02-13 07:01:45

标签: actionscript-3 flash

请考虑以下代码:

var combined:Number = Number(4294967296) | Number(2403025069);
var testLimit:Number = 6697992365;
trace("Combined is:", combined, "should be", testLimit);

输出是:

  

组合是:-1891942227应该是6697992365

为什么?我以为Number数据类型可以容纳64位整数(好吧 - 真的是52位,但上面的数字远远没有达到那个限制)

1 个答案:

答案 0 :(得分:1)

来自documentation

  

|按位OR运算符

     

将expression1和expression2转换为32位无符号整数,并在每个位位置放置1,其中expression1或expression2的相应位为1。

     

...

     

结果被解释为32位二进制补码数,因此结果为整数,范围为-2147483648到2147483647。