~ (按位取反)

来自Microduino Wikipedia
Write_data@qq.com讨论 | 贡献2016年3月28日 (一) 09:25的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
  • 按位取反 (~)

按位取反在C+ +语言中是波浪号~。与&(按位与)和|(按位或)不同,按位取反使用在一个操作数的右侧。按位取反将操作数改变为它的“反面”:0变为1,1变成0。例如:


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

你可能会惊讶地看到结果为像-104这样的数字。这是因为整数型变量的最高位,即所谓的符号位。

如果最高位是1,这个数字将变为负数。这个正数和负数的编码被称为补。

顺便说一句,有趣的是,要注意对于任何整数型操作数X,〜X和-X-1是相同的。

有时,对带有符号的整数型操作数进行位操作可以造成一些不必要的意外。

[返回Arduino语法手册]