欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的位運算符全解

 更新時間:2022年03月02日 15:50:05   作者:小小茶花女  
這篇文章主要為大家詳細介紹了Java中的位運算符,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. &(按位與運算符)

&按位與的運算規(guī)則是將兩邊的數(shù)轉換為二進制位,然后運算最終值,運算規(guī)則即(兩個為真才為真):1&1=1 , 1&0=0 , 0&1=0 , 0&0=0

public class Main {
    public static void main(String[] args) {
        // &按位與,運算符兩邊的條件值會先轉換為2進制,然后再比對運算
        /**
         *   0 0 1 1  
         *   0 1 0 1
         *  ----------- 
         *   0 0 0 1
         */
        int a = 3&5;
        /**
         *   0 0 0 1
         *   0 0 1 0
         *  ----------- 
         *   0 0 0 0
         */
        int b = 1&2;
        System.out.println(a);// 1
        System.out.println(b);// 0
    }
}

2. |(按位或運算符)

|按位或和&按位與計算方式都是轉換二進制再計算,不同的是運算規(guī)則(一個為真即為真):1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

public class Main {
    public static void main(String[] args) {
        // |按位或,運算符兩邊的條件值會先轉換為2進制,然后再比對運算
        /**
         *   0 0 1 1
         *   0 1 0 1
         *  -------------
         *   0 1 1 1
         */
        int a = 3|5;
        /**
         *   0 0 0 1
         *   0 0 1 0
         *  -------------
         *   0 0 1 1
         */
        int b = 1|2;
        System.out.println(a);// 7
        System.out.println(b);// 3
    }
}

3. ^(異或運算符)

^異或運算符顧名思義,異就是不同,其運算規(guī)則為1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

public class Main {
    public static void main(String[] args) {
        /**
         *   0 0 1 1
         *   0 1 0 1
         *  -------------
         *   0 1 1 0
         */
        int a = 3^5;
        /**
         *   0 0 0 1
         *   0 0 1 0
         *  -------------
         *   0 0 1 1
         */
        int b = 1^2;
        System.out.println(a);// 6
        System.out.println(b);// 3
    }
}

4. <<(左移運算符)

5<<2的意思為5的二進制位往左挪兩位,右邊補0

5的二進制位是0000 0101 , 就是把有效值101往左挪兩位就是0001 0100 ,正數(shù)左邊第一位補0,負數(shù)補1,等于乘于2的n次方,十進制位是5*2^2=20

public class Main {
    public static void main(String[] args) {
        /**
         * 5<<2的意思為5的二進制位往左挪兩位,右邊補0
         *  0 0 0 0 0 1 0 1
         *  0 0 0 1 0 1 0 0
         */
        System.out.println(5<<2); // 20
    }
}

5. >> (右移移運算符)

凡位運算符都是把值先轉換成二進制再進行后續(xù)的處理

5的二進制位是0000 0101,右移兩位就是把101左移后為0000 0001,正數(shù)左邊第一位補0,負數(shù)補1,等于除于2的n次方,結果為1

public class Main {
    public static void main(String[] args) {
        /**
         * 5>>2的意思為5的二進制位往右挪兩位,左邊補0
         *  0 0 0 0 0 1 0 1
         *  0 0 0 0 0 0 0 1
         */
        System.out.println(5<<2); // 1
    }
}

6. ~(取反運算符)

取反就是1為0,0為1

5的二進制位是0000 0101,取反后為1111 1010,值為-6

public class Main {
    public static void main(String[] args) {
        /**
         *     0 0 0 0 0 1 0 1
         *   ---------------------  
         *     1 1 1 1 1 0 1 0
         *  
         *  1、如果 11111010 想轉為負的十進制,因為最高位是1,所以先將11111001減1得到11111001
         *  2、取反 00010101,然后計算出 00000100 對應的十進制為6
         *  3、所以 11111010 最終對應的十進制為 -6
         *  
         *     1 1 1 1 1 0 1 0
         *   - 0 0 0 0 0 0 0 1
         *   ---------------------
         *     1 1 1 1 1 0 0 1
         *   ---------------------
         *     0 0 0 0 0 1 0 0
         */
        System.out.println(~5); // -6
    }
}

7. >>>(無符號右移運算符)

(1) 正數(shù)無符號右移

無符號右移運算符和右移運算符的主要區(qū)別在于負數(shù)的計算,因為無符號右移是高位補0,移多少位補多少個0。

15的二進制位是0000 1111 , 右移2位0000 0011,結果為3

public class Main {
    public static void main(String[] args) {
        /**
         *     0000 1111
         *   --------------- 
         *     0000 0011
         */
        System.out.println(15>>>2); // 3
    }
}

(2) 負數(shù)無符號右移

-6的二進制是6的二進制取反再加1,6的二進制也就是0000 0000 0000 0000 0000 0000 0000 0110,取反后加1為1111 1111 1111 1111 1111 1111 1111 1010,右移三位0001 1111 1111 1111 1111 1111 1111 1111

public class Main {
    public static void main(String[] args) {
        System.out.println(-6>>>3); // 536870911
    }
}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容! 

相關文章

最新評論