Python 移位到 java

Python bitshifting to java

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

由于 Java 的 int 是 32 位(参见 here),将其向右移动 32 位不会留下原始 int 的任何内容,因此没有多大意义

这对我来说真的没有意义,因为在 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;
}