我最近进行了能力倾向考试并遇到了这段代码:
public class MainClass{
public static void main(String[] argv){
int x = 0x80000000;
x = x >>> 31;
System.out.println(x);
}
}
起初我认为它必定是某种错误,但这会产生1
的有效输出。使用x >> 31
,输出为-1
,这是可以理解的,但额外的>
会做什么?
答案 0 :(得分:1)
它被称为unsigned shift right,这意味着它总是填充零,无论原始int的符号如何。
答案 1 :(得分:1)
看看这里:https://www.javatpoint.com/operators-in-java。 >>>运算符与>>相同但有一个例外,它以不同的方式处理有符号整数。