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;
}
我在 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;
}