按位和邏輯運算子()
Java 語言提供了 4 個對整數或布林運算元執行按位或邏輯運算的運算子。
- 補碼(
~
)運算子是一元運算子,它執行一個運算元的位的按位或邏輯反轉; 見 JLS 15.15.5。 。 - AND(
&
)運算子是一個二進位制運算子,它執行兩個運算元的按位或邏輯和; 見 JLS 15.22.2。 。 - OR(
|
)運算子是二進位制運算子,它執行兩個運算元的按位或邏輯包含或邏輯; 見 JLS 15.22.2。 。 - XOR(
^
)運算子是二進位制運算子,它執行兩個運算元的按位或邏輯異或; 見 JLS 15.22.2。 。
當運算元為布林值時,這些運算子執行的邏輯運算可歸納如下:
| 一個 | B | 〜一 | A&B | A | B | A ^ B |
| – | - | – | — | —– | —– |
| 0
| 0 | 1 | 0 | 0 | 0 |
| 0
| 1 | 1 | 0 | 1 | 1 |
| 1
| 0 | 0 | 0 | 1 | 1 |
| 1
| 1 | 0 | 1 | 1 | 0 |
請注意,對於整數運算元,上表描述了各個位的情況。運算子實際上並行操作所有 32 或 64 位運算元或運算元。
運算元型別和結果型別
當運算元是整數時,通常的算術轉換適用。按位運算子的常見用例
~
運算子用於反轉布林值,或更改整數運算元中的所有位。
&
運算子用於遮蔽整數運算元中的一些位。例如:
int word = 0b00101010;
int mask = 0b00000011; // Mask for masking out all but the bottom
// two bits of a word
int lowBits = word & mask; // -> 0b00000010
int highBits = word & ~mask; // -> 0b00101000
|
運算子用於組合兩個運算元的真值。例如:
int word2 = 0b01011111;
// Combine the bottom 2 bits of word1 with the top 30 bits of word2
int combined = (word & mask) | (word2 & ~mask); // -> 0b01011110
^
運算子用於切換或翻轉位:
int word3 = 0b00101010;
int word4 = word3 ^ mask; // -> 0b00101001
有關使用按位運算子的更多示例,請參閱位操作