将Python移至Java

时间:2018-10-18 13:56:07

标签: java python bit-shift

我在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)

2 个答案:

答案 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;
}