1. 程式人生 > >java 無符號右移>>> 有符號右移>>

java 無符號右移>>> 有符號右移>>

有符號右移>>

有符號右移就是右移之後,左邊的補上符號位,正數補0,負數補1

無符號右移>>>

無符號右移就是右移之後,無論該數為正還是為負,右移之後左邊都是補上0

左移<<

左移不區分有符號和無符號,都是左移之後右邊補上0,最左邊的符號位也直接移走

測試程式碼如下,直接看輸出就能明白

        System.out.println("java 右移");
        Integer a = -5;
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toBinaryString(a >> 2));
        System.out.println(Integer.toBinaryString(a >>> 2));
     
//        java 右移
//        11111111111111111111111111111011
//        11111111111111111111111111111110
//        111111111111111111111111111110      注:前邊的兩個0被省略了
        
        
        System.out.println("java 負數 左移");
        Integer b = -(int)Math.pow(2, 31);
        System.out.println(Integer.toBinaryString(b));
        System.out.println(Integer.toBinaryString(b << 2));
//      java 負數 左移
//      10000000000000000000000000000001
//      100                                  注:不保留符號位,符號位直接移走
        
        System.out.println("java 正數 左移");
        Integer c = 5;
        System.out.println(Integer.toBinaryString(c));
        System.out.println(Integer.toBinaryString(c << 2));
//      java 正數 左移
//      101
//      10100