有人可以解释一下吗:
$node -v
v0.10.10
$ node
> (10000000)>>1
5000000
> (100000000)>>1
50000000
> (1000000000)>>1
500000000
> (10000000000)>>1
705032704
根据ECMA第8.5节-数字,不应该是最大整数表示形式的2 ^ 53吗?
最佳答案
根据ECMAScript specification on >>
,左操作数将传递给抽象操作ToInt32
,其描述为:
抽象运算ToUint32将其自变量转换为-231至231-1(含)范围内的232个整数值之一。
其行为被指定为:
设posInt为符号(数字)×底数(绝对(数字))。
设int32bit为posInt模232;也就是说,数值类型为正数且大小小于232的有限整数k
如果int32bit大于或等于231,则返回int32bit-232,否则返回int32bit。
因此,>>
的结果不能大于231,并且任何较大的值都将通过模332转换(对于大于231的值,负溢出)。
关于javascript - Node int溢出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21114117/