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

Java中的位運(yùn)算符全解

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

1. &(按位與運(yùn)算符)

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

public class Main {
    public static void main(String[] args) {
        // &按位與,運(yùn)算符兩邊的條件值會先轉(zhuǎn)換為2進(jìn)制,然后再比對運(yùn)算
        /**
         *   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. |(按位或運(yùn)算符)

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

public class Main {
    public static void main(String[] args) {
        // |按位或,運(yùn)算符兩邊的條件值會先轉(zhuǎn)換為2進(jìn)制,然后再比對運(yùn)算
        /**
         *   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. ^(異或運(yùn)算符)

^異或運(yùn)算符顧名思義,異就是不同,其運(yùn)算規(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. <<(左移運(yùn)算符)

5<<2的意思為5的二進(jìn)制位往左挪兩位,右邊補(bǔ)0

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

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

5. >> (右移移運(yùn)算符)

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

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

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

6. ~(取反運(yùn)算符)

取反就是1為0,0為1

5的二進(jìn)制位是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 想轉(zhuǎn)為負(fù)的十進(jìn)制,因為最高位是1,所以先將11111001減1得到11111001
         *  2、取反 00010101,然后計算出 00000100 對應(yīng)的十進(jìn)制為6
         *  3、所以 11111010 最終對應(yīng)的十進(jìn)制為 -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. >>>(無符號右移運(yùn)算符)

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

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

15的二進(jìn)制位是0000 1111 , 右移2位0000 0011,結(jié)果為3

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

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

-6的二進(jìn)制是6的二進(jìn)制取反再加1,6的二進(jìn)制也就是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
    }
}

總結(jié)

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

相關(guān)文章

最新評論