在C语言中,输出数字的二进制表示主要有以下两种方法:
一、使用`printf`函数的格式控制符(推荐)
1. 使用`%b`格式控制符(需C99及以上标准支持)
```c
include int main() { int num = 10; printf("The binary representation of %d is %bn", num, num); return 0; } ``` 该方法直接输出二进制字符串,例如10的二进制为`1010`。 2. 使用`%s`格式控制符手动转换 ```c include void printBinary(int num) { char binary = {0}; // 32位+终止符 for (int i = 0; i < 32; i++) { binary[i] = (num & (1 << (31 - i))) ? '1' : '0'; } binary = '0'; printf("Binary representation of %u: %sn", num, binary); } int main() { unsigned int num = 42; printBinary(num); return 0; } ``` 通过位运算逐位填充字符数组,再输出为字符串。
二、使用位运算手动实现
```c
include 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; if (i % 4 == 0) printf(" "); // 每4位换行 } printf("n"); } int main() { int num = 10; printf("二进制形式: "); printBinary(num); return 0; } ``` 通过循环与位与运算逐位输出,保留符号位,例如10的二进制为`00000000000000000000000000001010`。 注意事项: `%b`格式控制符在部分旧版编译器中可能不支持,需使用第二种方法。 无符号整数(如`unsigned int`)在位运算时不会保留符号位,需注意数据类型选择。