名稱 | 運算子 | 說明 | 範例 |
位元 and | & | a & b | 回傳兩個運算元對於每個bit做AND的結果。 |
位元 or | | | a | b | 回傳兩個運算元對於每個bit做OR的結果。 |
位元 xor | ^ | a ^ b | 回傳兩個運算元對於每個bit做XOR的結果。 |
位元 not | ~ | ~ a | 將運算元中的每個bit反轉(1->0,0->1)。 |
左移 | << | a << b | 將 a 的每個bit向左移動 b 個bits,空餘的位數以0填滿。 |
有號右移 | >> | a >> b | 將 a 的每個bit向右移動 b 個bits,空餘位數以最高位補滿。 |
以 0 填充的右移 | >>> | a >>> b | 將 a 的每個bit向右移動 b 個bits,空餘的位數以0填滿。 |
左移 | << | 這個運算子會將第 一個運算元的每個bit向左移動 第二個運算元所指定的bit數量。左邊超出的位數會被捨棄,右邊空出的位數以0補齊。 | 9<<2 得到 36,因為1001 向左移動 2 bits 會得到 100100, 也就是二進位的 36。 |
有號右移 | >> | 這個運算子會將第 一個運算元的每個bit向右移動 第二個運算元所指定的bit數量。右邊超出的位數會被捨棄,左邊空出的位數以最高位補齊。 | 9>>2 得到 2,因為 1001 向右移動 2 bits 會得到 10,也就是二進位的 2。 相同的, -9>>2 會得到 -3,因為最高位用來表示正負號的bit被保留了。 |
以0填充的右移(>>>) | >>> | 這個運算子會將第 一個運算元的每個bit向右移動 第二個運算元所指定的bit數量。右邊超出的位數會被捨棄,左邊空出的位數以0補齊。 | 19>>>2 得到 4, 因為 10011 向右移動 2 bits 會得到 100,是二進位的 4。對於非負的數字而言, 以0填充的右移 會得到和 有號右移相同的結果。 |