有没有办法让python产生与java左移相同的结果?

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

我必须将某些功能从Java代码转移到Python。但是左移会返回不同的结果。而且Python在Java中缺少>>>运算符

如何使它们相同?Python:6116937115306182825 << 11 = 12527487212147062425600

java:6116937115306182825 << 11 = 2147986098276878336

java python bit
2个回答
5
投票

java的位数有限(64),而python没有...因此您需要将其强制为正确的位数(64)

(6116937115306182825 << 11) & 0xFFFFFFFFFFFFFFFF

2
投票

[当您需要大于long大小的整数值,即大于9_223_372_036_854_775_807的值时,请使用BigInteger

System.out.println(new BigInteger("6116937115306182825").shiftLeft(11));

输出

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