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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM