gpt4 book ai didi

javascript - Node int溢出?

转载 作者:行者123 更新时间:2023-12-02 17:54:05 24 4
gpt4 key购买 nike

有人可以解释一下吗:

$node -v
v0.10.10

$ node
> (10000000)>>1
5000000
> (100000000)>>1
50000000
> (1000000000)>>1
500000000
> (10000000000)>>1
705032704

根据 ECMA 第 8.5 节 - 数字,最大 int 表示形式不应该是 2^53 吗?

最佳答案

根据ECMAScript specification on >> ,左操作数被传递到抽象操作 ToInt32其描述如下:

The abstract operation ToUint32 converts its argument to one of 232 integer values in the range -231 through 231−1, inclusive.

其行为被指定为:

  • Let posInt be sign(number) × floor(abs(number)).
  • Let int32bit be posInt modulo 232; that is, a finite integer value k of Number type with positive sign and less than 232 in magnitude
  • If int32bit is greater than or equal to 231, return int32bit − 232, otherwise return int32bit.

因此,>> 的结果不能大于 231,并且任何大于的值都会通过模 332 进行转换>(大于 231 的值会出现负溢出)。

关于javascript - Node int溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com