Java篇—移位運算符詳解及代碼展示

Java移位運算符的內容:

左移位運算符(<<)、有符號右移位運算符(>>)、無符號右移位運算符(>>>)。

移位運算符的操作對象:

移位運算符操作的對象就是二進制的位可以單獨用移位運算符來處理int型整數。

移位運算符詳解:

(1)左移位運算符(<<):將運算符左邊的對象向左移動運算符右邊指定的位數(在低位補0);

public class test{
    public static void main(String[] args) {
        int num1 = 2,num2 = 2,num3;
        num3 = num1 << num2;
        System.out.println("a 移位的結果是" + num3);       //輸出結果:8
    }
}

注:左移n位,相當於給原數乘以2的n次方。

(2)有符號右移位運算符(>>):將運算符左邊的對象向右移動運算符右邊指定的位數。使用符號擴展機制(最高位的符號位一直存在,運算後,如果是正數,在高位補0,如果是負數,則在高位補1),當且僅當,值爲正;

public class test{
    public static void main(String[] args) {
        int num1 = 16;
        int num2 = -16;
        int num3 = 2;
        int num4 = 2;
        System.out.println("num1 的移位結果:"+(num1 >> num3));  //輸出結果:4
        System.out.println("num2 的移位結果:"+(num2 >> num4));  //輸出結果:-4
    }
}

注:右移n位,相當於給原數除以2的n次方,正負號不變。

(3)無符號右移位運算符(>>>):將運算符左邊的對象向右移動運算符右邊指定的位數。採用0擴展機制(符號位也參與運算,運算後,補0),也就是說,無論值的正負。

public class test{
    public static void main(String[] args) {
        int num1 = 16;
        int num2 = -16;
        int num3 = 2;
        System.out.println(num1 >>> num3);    //輸出結果:4
        System.out.println(num2 >>> num3);    //輸出結果:1073741820
    }
}

注:負數的符號位參與運算。

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