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: }
输出
串口监视器输出如下所示:
如您所见,输出完全符合我们的预期。
广告