Javascript(Math.pow(2,31)| 0)产生负数

时间:2017-05-18 05:31:42

标签: javascript math

在JS中说,位运算符仅针对32位数字定义,安全范围为Math.pow(-2,31),最高为Math.pow(2,31)-1

可以使用| 0

将数字强制为32位有符号整数

所以我在Chrome的控制台中进行了测试:

Math.pow(2,30) | 0
1073741824
Math.pow(2,31)
2147483648
Math.pow(2,31) | 0
-2147483648
Math.pow(2,32) | 0
0

为什么按位数为正数或0为负数?

1 个答案:

答案 0 :(得分:0)

在按位操作中,javascript以32位整数运行。最大值为int x = 2147483647; x++; ,因此当您超过该数字时,更改为负值。如果你在java中做这样的事情:

-2147483648

结果是Math.pow(2,31) | 0,这在javascript中是相同的。执行{{1}}时,超出整数最大值。