Java 面試題 Java 中>>和>>>的區別

一、區別

1. 區別

1.( >>) 表示右移,即 : 該數爲正,高位補數 0 ,如果爲負數,高位補數 1
2. ( >>> )無符號右移,也叫邏輯右移,即 :該數爲正,高位補數 0 ,如果爲負數,高位補數0

2.結論

 * 二、結論
 * 1. 正數: 右移 和 無符號右移 答案一致
 * 2. 負數:不一致
 *      2.1 右移依舊減半,
 *      2.2 無符號右移會產生一個很大的正數
 * `

3。代碼實例

package NMID.week01;

/**
 * 1. >> 表示右移,即 : 該數爲正,高位補數 0 ,如果爲負數,高位補數 1
 * 2.  >>> 無符號右移,也叫邏輯右移,即 :該數爲正,高位補數 0 ,如果爲負數,高位補數0
 * 二、結論
 * 1. 正數: 右移 和 無符號右移 答案一致
 * 2. 負數:不一致
 *      2.1 右移依舊減半,
 *      2.2 無符號右移會產生一個很大的正數
 */
public class 右移無符號右移的區別 {
    public static void main(String[] args) {
        int a1 = 2;//2 的 二進制是 0000 0010
        int b1 = a1>>1;//2 向右移動,高位由0補齊, b1 0000 0001
        System.out.println("2>>1 後: "+b1);
        int a2 = -2 ; //-2 的 二進制是 1111 1101 ,
        int b2 = a2>>1;//如果爲負數,高位補數 1: b2 1111 1110
        System.out.println("-2>>1 後:"+b2);
        System.out.println("--------1.正數的>>和>>>一致的,都是減半--------------");
        System.out.println("---------------2. 負數:不一致--------------\n" +
                " *      2.1 右移依舊減半,\n" +
                " *      2.2 無符號右移會產生一個很大的正數");
        int a3 = -2;
        int b3 = a3>>>1;
        System.out.println("-2>>>1 的結果:"+b3);
    }
}

Run:

2>>1 後: 1
-2>>1 後:-1
--------1.正數的>>和>>>一致的,都是減半--------------
---------------2. 負數:不一致--------------
 *      2.1 右移依舊減半,
 *      2.2 無符號右移會產生一個很大的正數
-2>>>1 的結果:2147483647

Process finished with exit code 0

4.拓展:只有無符號右移 >>> 沒有無符號左移 <<<!!!

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