Arduino 中按位异或
就像其他按位运算符一样,按位异或也单独对相应位进行运算。
运算符是 ^,语法为:
a ^ b
其中 a 和 b 是要进行异或运算的两个数。
下面给出异或的真值表 −
P | Q | P^Q |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
正如你所见,异或运算符仅在两个位不同时返回 1。
如果你执行 10 ^ 3,将在位级别发生以下计算(假设你的电路板使用 16 位表示整数):
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 | 1 | 0 | 0 | 1 | 10 ^ 3 = 9 |
示例
让我们在串行监视器上验证这一点。下面给出代码 −
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); } void loop() { // put your main code here, to run repeatedly: }
输出
串行监视器输出如下 −
正如你所见,输出完全符合预期。
广告