在C++中,按位取反用符号"~"表示。不像按位与(&)和按位或(|),按位取反(^)用于单个操作数,用来改变操作数上每一位的值,将0变为1,或将1变为0。比如:

    0  1       运算数1
   ------
    1  0       运算数1取反

16位的用法相同。如下:

    int a = 103;    // 二进制:  0000000001100111
    int b = ~a;     // 二进制:  1111111110011000 = -104

看到此操作的结果为一个负数:-104,你可能会感到惊讶。这是因为整型变量的最高位,所谓的符号位。如果最高位为1,该整数为负数。正数和负数的编码被称为二进制补码。想了解更多信息,请参阅维基百科条目:补码

顺便说一句,需要注意的是,对于任何整数x,其**~x-x-1**的值相等。有时候,对带有符号的整数型操作数进行位操作可能造成一些不必要的情况。

翻译自:Arduino Language Reference

<File:nextredirectltr.png>返回Arduino语法手册首页

<File:nextredirectltr.png>更多建议,指正,或者文档分享欢迎进入DF创客社区