Arduino 中的按位與和或
按位與/或表示在位級分別執行與/或運算。每個數字都有其二進位制表示形式。當您對一個數字與另一個數字執行按位與運算時,對這兩個數字的對應位執行與運算。因此,數字 1 的最低有效位與數字 2 的最低有效位進行與運算,依此類推。
Arduino 中的按位與運算子為 &,按位或運算子為 |。
語法
a & b
用於與運算。
a | b
用於或運算。
與運算的真值表為
P | Q | p & q |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
或運算的真值表為:
P | Q | p & q |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
由於這些是按位運算子,因此我們需要對每一位執行此操作。
例如,如果我需要執行 10 & 3,則操作如下所示
1 | 0 | 1 | 0 | 10 | |
0 | 0 | 1 | 1 | 3 | |
0 | 0 | 1 | 0 | 10 & 3 = 2 |
如您所見,對每一位分別執行與運算。
類似地,10 | 3 的操作如下所示:
1 | 0 | 1 | 0 | 10 | |
0 | 0 | 1 | 1 | 3 | |
1 | 0 | 1 | 1 | 10 | 3 = 2 |
請注意,這實際上適用於數字的所有位(即使是前導 0)。因此,如果您的開發板使用 16 位來表示整數,則實際操作(對於 10 & 3)如下所示:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 10 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 3 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 10 & 3 = 2 |
| 運算子也適用相同規則。
示例
讓我們透過 Arduino 進行驗證。程式碼如下所示:
void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); int a = 10; int b = 3; Serial.println(a & b); Serial.println(a | 3); } void loop() { // put your main code here, to run repeatedly: }
輸出
序列埠監視器輸出如下所示:
如您所見,輸出完全符合我們的預期。
廣告