在C语言中,表达二进制数主要有以下四种方式:
一、二进制字面量(推荐)
从C99标准开始支持,直接使用前缀`0b`或`0B`表示二进制数,例如:
```c
int binary = 0b1010; // 十进制10
```
这是最直观且符合现代C语言规范的方式。
二、位运算符
通过位移和按位运算符组合构建二进制数,例如:
```c
int binary = (1 << 3) | (1 << 1); // 二进制1010(十进制10)
```
`1 << 3`:左移3位得到`1000`;
`1 << 1`:左移1位得到`0010`;
`|`:按位或运算得到`1010`。
三、八进制字面量(兼容)
以`0`开头的八进制数可隐式转换为二进制,例如:
```c
int binary = 0101; // 二进制101(十进制5)
```
八进制每位对应3位二进制,因此`0101`等于`0000101`。
四、条件编译指令
使用`if`等指令根据二进制值进行条件编译,例如:
```c
if 0b1010
// 执行特定代码
endif
```
这种方式不直接定义二进制数,但可基于二进制常量进行逻辑控制。
补充说明:若需将十进制数转换为二进制显示,可通过位运算和循环实现,例如:
```c
void printBinary(int num) {
int bits = sizeof(int) * 8;
unsigned int mask = 1 << (bits - 1);
for (int i = 0; i < bits; i++) {
printf("%d", (num & mask) ? 1 : 0);
num <<= 1;
}
}
```
该函数通过逐位检查并输出二进制结果。