按位和邏輯運算子()

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

有關使用按位運算子的更多示例,請參閱位操作