Arduino 中的按位 AND 和 OR

arduinoarduino boardsarduino idearduino programming language

按位 AND/OR 表示在位级别单独执行 AND/OR。每个数字都有其二进制表示。当您将一个数字与另一个数字按位 AND 时,AND 运算将在两个数字的相应位上执行。因此,数字 1 的 LSB 与数字 2 的 LSB 进行 AND,依此类推。

Arduino 中的按位 AND 运算是 &,按位 OR 运算符是 |。

语法

a & b

用于 AND。

a | b

对于 OR。

AND 的真值表是

PQp & q
000
010
10
10
11

或的真值表为 −

PQp & q
000
011
101
11

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

例如,如果我必须执行 10 & 3、操作会是这样的

1010
10
0011
3
0010
10 & 3 = 2

如您所见,AND 运算符针对每个相应位单独执行。

类似地,10 | 3 的运算将如下所示 −

1010
10
0011
3
1011
10 | 3 = 2

请注意,这实际上适用于数字的所有位(甚至前导 0)。因此,如果您的主板使用 16 位来表示整数,则实际操作(对于 10 & 3)将看起来像 −

0000000001010
10
00000000000011
3
0000000000000000
10 & 3 = 2

同样适用于 |操作。

示例

让我们通过 Arduino 验证这一点。代码如下 −

void setup() {
   // 将您的设置代码放在此处,运行一次:
   Serial.begin(9600);
   Serial.println();

   int a = 10;
   int b = 3;
   Serial.println(a & b);
   Serial.println(a | 3);
}
void loop() {
   // 将您的主要代码放在此处,以便重复运行:
}

输出

串行监视器输出如下所示 −

如您所见,输出正是我们所期望的。


相关文章