Arduino 中的按位非


与逻辑非不同,逻辑非会反转表达式的真值,按位非适用于数字的每一位,并反转其值(0 到 1,1 到 0)。运算符是 ~。

因此,语法为 ~a,其中 a 是该运算符必须应用到的数字。

请注意,数字表示形式中的所有前导 0 也都将转换为 1。例如,如果你的电路板使用 16 位来表示整数,则 10 将如下所示

0000000000001010
10
1111111111110101
~10=-11

正如你所见,10 的每一位都已反转。根据二进制补码,该数字对应于 -11。你可以使用该网站快速将十进制数字转换成二进制补码,反之亦然 https://www.exploringbinary.com/twos-complement-converter/.

你可以了解更多关于二进制补码的信息 &minnus; https://tutorialspoint.com/two-scomplement

示例

让我们在串口监视器上验证这一点。代码如下 −

void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);
   Serial.println();

   int a = 10;
   Serial.println(~a);
}

void loop() {
   // put your main code here, to run repeatedly:
}

输出

串口监视器输出为 −

如您所见,输出与预期相同。

更新于: 2021 年 5 月 31 日

912 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告