1. 位運算&符
我們之前說過,所有數據都以二進製表示形式存儲在內存中。所以很久以前,程序員想出了很多有趣的方法來處理二進制數。例如,Java 具有對數字二進製表示的位進行運算的邏輯運算符:&(AND)、, | (OR)( ~NOT 或補碼) 和^(XOR - 異或)。
a & b
&(AND) 運算符
此運算符與邏輯 (AND) 運算符非常相似&,只是它由一個符號表示,而不是兩個:
並將其應用於各個位。每個操作數都被視為一個位數組,i結果的第 th 位是使用i兩個操作數中每一個的第 th 位計算的。
結果的第一位將根據數字的第一位a 和數字的第一位計算b,第二位——根據數字的第二位a 和數字的第二位b,等等。
( &AND) 運算符的意思是“只有當數字的相應位等於一時,結果位才a等於一AND數字的相應位b等於一”:
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
例子:
| 例子 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
2. 位運算|符
此運算符與邏輯 (OR) 運算符非常相似|,只是它由一條垂直線表示,而不是兩條:
a | b
並將其應用於各個位。每個操作數都被視為一個位數組,結果的第 i 位是使用兩個操作數中每一個的第 i 位計算的。
按位|(OR) 運算符表示“如果數字的相應位等於 1,則結果位a等於 1,OR則數字的相應位b等於 1”:
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
例子:
| 例子 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
只有當兩個數的對應位(相同位置的位)都為零時,結果對應的位才為零。
3. 按位^(異或或“異或”)運算符
運算XOR符,也發音為exclusive or,由符號表示^。要在鍵盤上輸入它,請按shift + 6(在英文鍵盤佈局上)。
a ^ b
該運算符與 運算符有些相似OR,包括名稱相似:XOR
按位^(XOR) 運算符表示“如果數字的相應位等於 1,則結果位a等於 1OR數字的相應位b等於 1,但不能同時等於 1”:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
例子:
| 例子 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
只有當兩個數對應的位(相同位置的位)不同時,結果對應的位才等於1。如果位相同,則結果位等於零。
4.按位~(非,補)運算符
我想你已經猜到它的作用了。此運算符與邏輯 (NOT) 運算符非常相似!,但它由波浪號而不是感嘆號表示:
~a
這是一個一元運算符,這意味著它適用於單個數字,而不是兩個。它出現在這個單一操作數之前。
按位運算符表示“如果數字的相應位為零,~則結果位為一,如果數字的相應位為一,則結果位為零”:aa
~1 = 0
~0 = 1
例子:
| 例子 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
這個運算符只是簡單地改變了1到的位0和到的0位1。
GO TO FULL VERSION