Arduino 中的按位与和或


按位与/或表示在位级分别执行与/或运算。每个数字都有其二进制表示形式。当您对一个数字与另一个数字执行按位与运算时,对这两个数字的对应位执行与运算。因此,数字 1 的最低有效位与数字 2 的最低有效位进行与运算,依此类推。

Arduino 中的按位与运算符为 &,按位或运算符为 |。

语法

a & b

用于与运算。

a | b

用于或运算。

与运算的真值表为

PQp & q
000
010
100
111

或运算的真值表为:

PQp & q
000
011
101
111

由于这些是按位运算符,因此我们需要对每一位执行此操作。

例如,如果我需要执行 10 & 3,则操作如下所示

1010
10
0011
3
0010
10 & 3 = 2

如您所见,对每一位分别执行与运算。

类似地,10 | 3 的操作如下所示:

1010
10
0011
3
1011
10 | 3 = 2

请注意,这实际上适用于数字的所有位(即使是前导 0)。因此,如果您的开发板使用 16 位来表示整数,则实际操作(对于 10 & 3)如下所示:

0000000000001010
10
0000000000000011
3
0000000000000000
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:
}

输出

串口监视器输出如下所示:

如您所见,输出完全符合我们的预期。

更新于:2021 年 5 月 29 日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告