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

时间:2017-01-12 10:03:13

标签: javascript python bitwise-operators bit-shift

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

412287 << 10

然后我在两种语言中得到了相同的结果 422181888 。但是当我在两者中都这样做时

424970184 << 10

然后我在JavaScript中的 1377771520 和Python中的 435169468416 两种语言中得到不同的结果

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

2 个答案:

答案 0 :(得分:4)

this SO answer中所述,在javascript中,按位运算符和移位运算符以32位整数运行,而第二个示例溢出32位容量,因此python等价物将是:

(424970184 << 10) & 0x7FFFFFFF

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

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

答案 1 :(得分:3)

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

import ctypes

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

输出:

1377771520