1的不同行为<&书信电报;32比较javascript和python

1的不同行为<&书信电报;32比较javascript和python,javascript,python,Javascript,Python,Javascript 1<<31 -2147483648 1<<32 1 1JavaScript中的整数实际上是IEEE 754 64位浮点数。但是Python中的整数可以是简单整数或bignum JavaScript中的所有位操作都是在32位有符号/无符号整数上定义的。执行这些操作时,两个操作数首先转换为32位整数,结果将始终为32位整数 如果你想用232乘以一个数,你应该用1*2**32(或者ES5中的1*Math.pow(2,32))来代替这个数 Python

Javascript

1<<31
-2147483648
1<<32
1

1JavaScript中的整数实际上是IEEE 754 64位浮点数。但是Python中的整数可以是简单整数或bignum


JavaScript中的所有位操作都是在32位有符号/无符号整数上定义的。执行这些操作时,两个操作数首先转换为32位整数,结果将始终为32位整数

如果你想用232乘以一个数,你应该用
1*2**32
(或者ES5中的
1*Math.pow(2,32)
)来代替这个数



Python具有内置的bignum支持,它支持所有位操作,例如左移。因此,你可以用任何(合理的)位对一个数字进行移位,它可能大于232。

可能是4294967296的重复,但不大于该数字。引用文章:“请注意,按位运算符和移位运算符对32位整数进行操作,因此在这种情况下,最大安全整数是2^31-1,或2147483647。”你读过吗?谢谢,我知道了,但你知道为什么1它是设计的一部分,我不知道为什么,但这就像问为什么JS不是强类型,或者为什么一元运算符+会将字符串转换为数字。若你们真的需要知道为什么,你们可以打开新的线程去问,这是完全不同的问题
1<<31
2147483648
1<<32
4294967296