1. 程式人生 > 其它 >Java >>和>>>的區別

Java >>和>>>的區別

技術標籤:基礎知識無符號右移有符號右移位移運輸費

在這裡插入圖片描述

“>>是有符號位移,>>>是無符號位移”,如果移動的是一個非負數,這兩個是沒有任何區別的比如我們看下

    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