我必须将某些功能从Java代码转移到Python。但是左移会返回不同的结果。而且Python在Java中缺少>>>运算符
如何使它们相同?Python:6116937115306182825 << 11 = 12527487212147062425600
java:6116937115306182825 << 11 = 2147986098276878336
java的位数有限(64),而python没有...因此您需要将其强制为正确的位数(64)
(6116937115306182825 << 11) & 0xFFFFFFFFFFFFFFFF
[当您需要大于long
大小的整数值,即大于9_223_372_036_854_775_807的值时,请使用BigInteger
:
System.out.println(new BigInteger("6116937115306182825").shiftLeft(11));
输出
12527487212147062425600