C语言中取反
时间: 2025-07-21 20:32:02 浏览: 6
在 C 语言中,"取反" 通常可以有两种含义:
1. **逻辑取反(Logical NOT)**:用于判断布尔值(真/假),操作符是 `!`。
2. **按位取反(Bitwise NOT)**:对一个整数的每一位取反(0 变 1,1 变 0),操作符是 `~`。
我们分别来看它们的用法和示例。
---
### 一、逻辑取反 `!`
用于判断一个表达式是否为假(0 为假,非 0 为真)。
#### 示例代码:
```c
#include <stdio.h>
int main() {
int a = 5;
if (!a) {
printf("a 是 0\n");
} else {
printf("a 不是 0\n");
}
return 0;
}
```
#### 输出:
```
a 不是 0
```
---
### 二、按位取反 `~`
对整数的每一位取反(包括符号位),适用于整型数据(如 `int`, `char` 等)。
#### 示例代码:
```c
#include <stdio.h>
int main() {
unsigned char a = 0b01010101; // 二进制表示
unsigned char b = ~a; // 按位取反
printf("a = %02X\n", a); // 输出 a 的十六进制
printf("b = %02X\n", b); // 输出 b 的十六进制
return 0;
}
```
#### 输出:
```
a = 55
b = AA
```
#### 说明:
- `0b01010101` 对应十六进制 `0x55`;
- 按位取反后变成 `0b10101010`,即十六进制 `0xAA`。
注意:在有符号整型中,使用 `~` 可能导致负数(取决于机器的整数表示方式,如补码)。
---
### 三、注意事项
| 类型 | 操作符 | 作用 | 示例 |
|------|--------|------|------|
| 逻辑取反 | `!` | 判断表达式真假 | `!0` → `1`、`!5` → `0` |
| 按位取反 | `~` | 对每一位取反 | `~0x55` → `0xAA` |
---
###
阅读全文
相关推荐

















