複合賦值位運算子
阿新 • • 發佈:2020-08-19
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。