URshift.java
public class URshift {
public static void main(String args[]) {
int i = -1;
System.out.println(i >>>= 10);
long l = -1;
System.out.println(l >>>= 10);
short s = -1;
System.out.println(s >>>= 10);
byte b = -1;
System.out.println(b >>>= 10);
b = -1;
System.out.println(b >>> 10);
}
}
/*
4194303
18014398509481983
-1
-1
4194303
*/
注: >>>= : 无符号右移赋值运算符
如果是byte或者是short值进行这样的一位运算,得到的可能不是正确的结果.它们会先被转换成int类型,再进行右移操作,但是零扩展不会发生,所以在这种情况下会得到-1的结果.
在最后一个移位运算中,移位后的结果并没有赋值给b,而是直接打印出来.