在C语言中,二进制数的表示方法主要有以下几种:
一、二进制字面量表示法
这是最直接的方法,使用`0b`或`0B`前缀后跟二进制数字(仅含0和1)。
```c
int binary_num = 0b1010; // 十进制10
int binary_num2 = 0B1111; // 十进制15
```
自C99标准起,`0b`和`0B`均被支持,但部分旧编译器可能仅接受`0b`。
二、八进制字面量表示法(二进制简写)
八进制数仅包含0-7,由于二进制是八进制的基,因此可以用八进制表示二进制数(每3位二进制对应1位八进制)。
```c
int binary_num3 = 0101; // 二进制0101,八进制5
```
三、位运算符操作
C语言提供位运算符对二进制位进行操作,包括:
按位与(&):逐位比较,全1为1,否则为0
```c
int a = 0b1010; int b = 0b0110; int c = a & b; // 结果0b0010(2)
```
按位或(|):逐位取1,全0为0
```c
int a = 0b1010; int b = 0b0110; int c = a | b; // 结果0b1110(14)
```
按位异或(^):对应位不同为1,相同为0
```c
int a = 0b1010; int b = 0b0110; int c = a ^ b; // 结果0b1100(12)
```
按位取反(~):逐位取反
```c
int a = 0b1010; int c = ~a; // 结果0b0101(5)
```
移位运算符:左移(`<<`)相当于乘以2,右移(`>>`)相当于除以2
```c
int a = 0b1010; int b = a << 2; // 结果0b101000(40)
```
位段(BitField):在结构体中定义固定位数的整数类型
```c
struct BitField { unsigned int a:4; unsigned int b:2; };
BitField bf = {0b1010, 0b11}; // a=10, b=3
```
四、其他注意事项
输出二进制数:
若需打印二进制形式,需通过位运算逐位输出(如使用循环和掩码)。
文件读写:
以二进制模式(`"rb"`/`"wb"`)打开文件可读写二进制数据。
以上方法覆盖了C语言中二进制数的主要表示方式,可根据具体需求选择合适的方法。