
孙老师为您分享以下优质知识
在C语言中,`printf`函数默认不支持直接打印二进制数,但可通过以下两种方式实现:
一、使用标准格式说明符 `%b`(推荐)
C99标准新增了 `%b` 格式说明符,可直接以二进制形式输出整数。语法为 `printf("%b", number)`,支持附加宽度(如 `%-10b`)和填充符号(如 `0`)。
示例代码:
```c
include
int main() {
int num = 10;
printf("%b", num); // 输出 1010
printf("%-10b", num); // 输出 00001010
printf("%010b", num); // 输出 00001010
return 0;
}
```
二、手动转换后使用 `%s` 格式说明符
若使用旧版C标准(不支持 `%b`),需手动将整数转换为二进制字符串,再通过 `%s` 输出。常用方法包括位操作和递归实现。
1. 位操作法(推荐)
```c
include
include
void print_binary(unsigned int num) {
char binary;
for (int i = 31; i >
= 0; i--) {
binary[i] = (num & (1 1) {
print_bin(number >
>
1);
}
putchar((number & 1) ? '1' : '0');
}
int main() {
int num = 0xAF01BC;
printf("Binary representation: ");
print_bin(num); // 输出 10101010111001
return 0;
}
```
注意事项:
使用 `%b` 时,需确保编译器支持C99标准(如使用 `-std=c99` 编译选项);
手动转换时,建议使用固定长度数组存储二进制字符串,并在末尾添加空字符 `0` 以确保正确输出。