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:
}输出
串口监视器输出如下所示:

如您所见,输出完全符合我们的预期。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP