坑點--左移&&右移&&無符號右移

要點:

<<:左移   左邊最高位丟棄,右邊補齊0
>>:右移   最高位是0,左邊補齊0;最高爲是1,左邊補齊1
>>>:無符號右移 無論最高位是0還是1,左邊補齊0

面試題:
    請用最有效率的方式寫出計算2乘以8的結果?
        2 * 8
        2 << 3

代碼展示區:

class OperatorDemo3 {
    public static void main(String[] args) {
        //<< 把<<左邊的數據乘以2的移動次冪
        System.out.println(3 << 2); //3*2^2 = 3*4 = 12;

        //>> 把>>左邊的數據除以2的移動次冪
        System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
        System.out.println(24 >>> 2);

        System.out.println(-24 >> 2); 
        System.out.println(-24 >>> 2);
    }
}
/*
    計算出3的二進制:11
        00000000 00000000 00000000 00000011
    (00)000000 00000000 00000000 0000001100

    >>的移動:  
    計算出24的二進制:11000
        原碼:10000000 00000000 00000000 00011000
        反碼:11111111 11111111 11111111 11100111
        補碼:11111111 11111111 11111111 11101000

        11111111 11111111 11111111 11101000
        1111111111 11111111 11111111 111010(00) 補碼

        補碼:1111111111 11111111 11111111 111010
        反碼:1111111111 11111111 11111111 111001
        原碼:1000000000 00000000 00000000 000110

        結果:-6

    >>>的移動:
        計算出24的二進制:11000
        原碼:10000000 00000000 00000000 00011000
        反碼:11111111 11111111 11111111 11100111
        補碼:11111111 11111111 11111111 11101000

        11111111 11111111 11111111 11101000
        0011111111 11111111 11111111 111010(00)

        結果:1073741818
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章