JavaScript按位运算符代码和Python按位运算符代码之间的区别

问题描述 投票:2回答:2

我已经转换了JavaScript代码,该代码在该代码中使用逐位运算符到Python代码,但是当我在JavaScript和Python中执行此操作时存在一个问题

412287 << 10

然后我用两种语言得到这个422181888相同的结果。但是当我这两个都这样做的时候

424970184 << 10

然后我在JavaScript中使用语言1377771520和在Python中使用435169468416获得不同的结果

任何人都可以帮我这个吗?任何帮助,将不胜感激。

javascript python bitwise-operators bit-shift
2个回答
3
投票

如果你想要java-script等价值,你可以做的是:

import ctypes

print(ctypes.c_int(424970184 << 10 ^ 0).value)

输出:

1377771520

4
投票

正如在this SO answer中所述,在javascript中,按位运算符和移位运算符以32位整数运行,而你的第二个例子溢出32位容量,因此python等效于:

(424970184 << 10) & 0x7FFFFFFF

(使用带符号的32位整数掩码得到“modulo”/“masked”值,而不是实际值)

在Python中,整数容量没有限制,因此您可以获得实际值。

© www.soinside.com 2019 - 2024. All rights reserved.