我已经转换了JavaScript代码,该代码在该代码中使用逐位运算符到Python代码,但是当我在JavaScript和Python中执行此操作时存在一个问题
412287 << 10
然后我用两种语言得到这个422181888相同的结果。但是当我这两个都这样做的时候
424970184 << 10
然后我在JavaScript中使用语言1377771520和在Python中使用435169468416获得不同的结果
任何人都可以帮我这个吗?任何帮助,将不胜感激。
如果你想要java-script等价值,你可以做的是:
import ctypes
print(ctypes.c_int(424970184 << 10 ^ 0).value)
输出:
1377771520
正如在this SO answer中所述,在javascript中,按位运算符和移位运算符以32位整数运行,而你的第二个例子溢出32位容量,因此python等效于:
(424970184 << 10) & 0x7FFFFFFF
(使用带符号的32位整数掩码得到“modulo”/“masked”值,而不是实际值)
在Python中,整数容量没有限制,因此您可以获得实际值。