reference:language:bitwisexornot
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 前一修订版 | |||
| — | reference:language:bitwisexornot [2025/10/11 02:55] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== 按位取反 (~) ====== | ||
| + | |||
| + | 按位取反在C+ +语言中是波浪号~。与&(按位与)和|(按位或)不同,按位取反使用在一个操作数的右侧。按位取反将操作数改变为它的“反面”:0变为1,1变成0。例如: | ||
| + | < | ||
| + | 0 1 operand1 | ||
| + | ---------- | ||
| + | 1 0 ~ operand1 | ||
| + | int a = 103; // 二进制: | ||
| + | int b = ~a; // 二进制: | ||
| + | </ | ||
| + | 你可能会惊讶地看到结果为像-104这样的数字。这是因为整数型变量的最高位,即所谓的符号位。如果最高位是1,这个数字将变为负数。这个正数和负数的编码被称为补。想了解更多信息,请参考Wikipedia文章two' | ||
| + | |||
| + | 顺便说一句,有趣的是,要注意对于任何整数型操作数X,~X和-X-1是相同的。 | ||
| + | |||
| + | 有时,对带有符号的整数型操作数进行位操作可以造成一些不必要的意外。 | ||
| + | |||
