Java >>和>>>的區別
阿新 • • 發佈:2020-12-31
“>>是有符號位移,>>>是無符號位移”,如果移動的是一個非負數,這兩個是沒有任何區別的比如我們看下
public static void main(String args[]) {
System.out.println();
int num = 10000;
System.out.println(num + "的二進位制表示: " + Util.bitInt32(num));
System.out.println (num + "有符號位移之後的二進位制表示:" + Util.bitInt32(num >> 3));
System.out.println(num + "無符號位移之後的二進位制表示:" + Util.bitInt32(num >>> 3));
}
我們再來看下執行結果
10000的二進位制表示: 00000000 00000000 00100111 00010000
10000有符號位移之後的二進位制表示:00000000 00000000 00000100 11100010
10000無符號位移之後的二進位制表示:00000000 00000000 00000100 11100010
“>>和>>>主要是對負數會有區別,我們來看下”
public static void main(String args[]) {
System.out.println();
int num = -10000;
System.out.println(num + "的二進位制表示: " + Util.bitInt32(num));
System.out.println(num + "有符號位移之後的二進位制表示:" + Util.bitInt32(num >> 3));
System.out. println(num + "無符號位移之後的二進位制表示:" + Util.bitInt32(num >>> 3));
}
這裡把10000改為-10000,再來看下執行結果
-10000的二進位制表示: 11111111 11111111 11011000 11110000
-10000有符號位移之後的二進位制表示:11111111 11111111 11111011 00011110
-10000無符號位移之後的二進位制表示:00011111 11111111 11111011 00011110