位非

来自YFRobotwiki
2017年9月10日 (日) 15:56Allblue讨论 | 贡献的版本

跳转至: 导航搜索

在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语法参考列表

更多建议和问题欢迎反馈至 YFRobot论坛