1. 程式人生 > 實用技巧 >複合賦值位運算子

複合賦值位運算子

java中的 |=、&=、^=

|=

關於 |= 運算子:|= 運算子和 += 這一類的運算子一樣,拆解開就是 a = a | b;

程式碼如下:

    public static strictfp void main(String[] args) {
    int a = 5; // 0000 0101
    int b = 3; // 0000 0011
    a |= b; // 0000 00111
    System.out.println(a);
    }

具體規則為:兩個二進位制對應位為0時該位為0,否則為1。拿5的二進位制 0000 0101 和 3的二進位制 0000 0011 進行|運算,後三位的的對應位都不是同時等於0,所以最終結果為 0000 0111 也就是7的二進位制。

&=

&= 和 |= 基本是一樣的,只不過對於比較同位方式不同。

程式碼如下:

    public static strictfp void main(String[] args) {
        int a = 5; // 0000 0101
        int b = 3; // 0000 0011
        a &= b; // 0000 0001
        System.out.println(a);
    }

具體規則為:兩個二進位制對應位都為1時,結果為1,否則結果為都0。拿5的二進位制 0000 0101 和 3的二進位制 0000 0011 進行&運算,只有最後一位都為1,則最終結果為 0000 0001 也就是1的二進位制。

^=

運算規則還是同上。

    public static strictfp void main(String[] args) {
        int a = 5; // 0000 0101
        int b = 3; // 0000 0011
        a ^= b; // 0000 0110
        System.out.println(a);
    }

具體規則為:兩個二進位制對應位相同時,結果為0,否則結果為1。拿5的二進位制 0000 0101 和 3的二進位制 0000 0011 進行^運算,1-5位對應位都是0所以1-5位都為0,第8位都為1所以第8位也為0,其他的對應位都不相等所以為1,則最終結果為 0000 0110 也就是6的二進位制。

總結:

  • |=:兩個二進位制對應位都為0時,結果等於0,否則結果等於1;

  • &=:兩個二進位制的對應位都為1時,結果為1,否則結果等於0;

  • ^=:兩個二進位制的對應位相同,結果為0,否則結果為1。