我在github上找到了一个python代码,我需要在java中做同样的事情,我几乎将其转换为java,但是我收到警告说Shift operation '>>' by overly large constant value
这是我要转换的python代码
if i > 32:
return (int(((j >> 32) & ((1 << i))))) >> i
return (int((((1 << i)) & j))) >> i
这是我尝试从python代码转换而来的Java代码
if (i > 32) {
return (j >> 32) & (1 << i) >> i;
}
return ((1 << i) & j) >> i;
警告在此行(j >> 32)
答案 0 :(得分:3)
由于Java的int
是32位(请参见here),因此将Java向右移32位不会与原始int
保持一致,因此没有太大意义>
答案 1 :(得分:0)
这对我来说真的没有意义,因为将int中的32位移位不会留下任何东西。但是,如果要使用long植入相同的方法,这是我编写的代码。
public int bitShift(long j, int i) {
return i > 32 ? ((int) ((j >> 32) & ((long) (1 << i)))) >> i : ((int) (j & ((long) (1 << i)))) >> i;
}