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 的真值表是
P | Q | p & q |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | |
1 | 0 | |
1 | 1 |
或的真值表为 −
P | Q | p & q |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 |
由于这些是按位运算符,我们需要对每个运算符执行此操作位。
例如,如果我必须执行 10 & 3、操作会是这样的
1 | 0 | 1 | 0 | 10 | |
0 | 0 | 1 | 1 | 3 | |
0 | 0 | 1 | 0 | 10 & 3 = 2 |
如您所见,AND 运算符针对每个相应位单独执行。
类似地,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 | 1 | 0 | 1 | 0 | 10 | ||||
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() { // 将您的设置代码放在此处,运行一次: Serial.begin(9600); Serial.println(); int a = 10; int b = 3; Serial.println(a & b); Serial.println(a | 3); } void loop() { // 将您的主要代码放在此处,以便重复运行: }
输出
串行监视器输出如下所示 −
如您所见,输出正是我们所期望的。