我在Java中遇到了移位操作符的问题。我使用了以下代码,但无法理解该程序如何生成此输出。请指导我该程序如何生成此输出。
public class Operator {
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 8;
s = s >>-63;
System.out.println("value of i=" + s);
}
}
输出: i的值为4
FFFFFFC1
,当你执行AND操作时,你会得到FFFFFFC1 & 0x0000001f == 0x00000001
这个计算结果。这个数字-63的表示方法是二进制补码。 - MByD-63&0x1f
为1。 - Jon Skeet