1.“>>”即帶符號位移
我們將-20右移四位結果爲-2
public static void main(String[] args) {
int x=-20;
System.out.println(">>"+(x>>4));
//10000000 00000000 00000000 00010100(原)
//11111111 11111111 11111111 11101011(反)
//11111111 11111111 11111111 11101100(補)
//----帶符號右移4位---->後a的值
//11111111 11111111 11111111 11111110(補碼)->
//11111111 11111111 11111111 11111101(反碼)->
//10000000 00000000 00000000 00000010(原碼)
}
2.“>>>”右移時,空餘位都填充0
最後的結果是268435454
public static void main(String[] args) {
int x=-20;
System.out.println(">>>"+(x>>>4));
//10000000 00000000 00000000 00010100(原)
//11111111 11111111 11111111 11101011(反)
//11111111 11111111 11111111 11101100(補)
//----不帶符號右移4位---->b的值
//00001111 11111111 11111111 11111110(補碼)
//00001111 11111111 11111111 11111110(反碼)
//00001111 11111111 11111111 11111110(原碼)
}
總結:可以看出來,兩個值是不同的,如果這裏把位移後的接受值強轉爲byte類型,結果相會相同。