C语言转二进制的方法可分为以下两类:
一、通过编译器生成二进制可执行文件
1. 编写C代码(如`include
2. 使用编译器(如GCC)编译:`gcc -o binary_file source.c`
3. 运行生成的可执行文件查看二进制输出
二、手动或程序实现二进制转换
- 整数部分:不断除以2,记录余数并逆序输出(如10转为1010)
- 代码示例:
```c
include void printBinary(int num) { int bit; while (num > 0) { bit = num % 2; printf("%d", bit); num = num / 2; } printf(""); } int main() { int num = 10; printf("二进制表示为: "); printBinary(num); return 0; } ``` - 适用场景:手动计算或教学演示
位操作符法
- 使用右移和按位与操作符逐位提取二进制位(如`num >>= 1`)
- 代码示例:
```c
include int main() { int num = 10; int b = {0}; for (int i = 0; i < 32; i++) { b[i] = num & 1; num >>= 1; } for (int i = 31; i >= 0; i--) { printf("%d", b[i]); } return 0; } ``` - 适用场景:需要逐位处理或固定位宽转换 内置函数法 - 使用`sprintf`格式化输出(如`printf("%b", 10)`) - 代码示例: ```c include int main() { int num = 10; printf("二进制表示为: %b", num); return 0; } ``` - 适用场景:快速格式化输出,但仅支持整数 十六进制转二进制 - 单个十六进制位对应4位二进制(如`0x1A`转为`00011010`) - 代码示例: ```c include int main() { int hex = 0x1A; for (int i = 3; i >= 0; i--) { printf("%04b", hex & 0xF); hex >>= 4; } return 0; } ``` - 适用场景:需要十六进制到二进制的转换 注意事项: 负数处理需额外逻辑(如补码表示);二进制输出长度需根据数据类型确定(如32位整数需预留足够空间)。