将十进制数转换为二进制数在C语言中可以通过以下两种常见方法实现:
一、整数部分转换(推荐使用除2取余法)
通过不断将十进制数除以2,记录余数,并将余数倒序排列,即可得到二进制表示。具体步骤包括:
- 使用`%`运算符获取余数(`i % 2`);
- 将商赋值给`i`(`i /= 2`);
- 将余数存储在数组中,最后倒序输出。
示例代码
```c
include
void decimalToBinary(int n) {
int binary = {0}; // 存储二进制结果
int index = 0;
// 除2取余,记录余数
while (n > 0) {
binary[index++] = n % 2;
n /= 2;
}
// 倒序输出二进制数
for (int i = index - 1; i >= 0; i--) {
printf("%d", binary[i]);
}
printf("n");
}
int main() {
int num;
printf("请输入一个十进制整数: ");
scanf("%d", &num);
decimalToBinary(num);
return 0;
}
```
二、小数部分转换(乘2取整法)
基本原理
通过将十进制小数部分乘以2,取整数部分作为二进制位,重复此过程直到小数部分为0或达到所需精度。
示例代码
```c
include
void decimalToBinaryFraction(double fraction, int precision) {
printf("二进制小数部分为: ");
for (int i = 0; i < precision; i++) {
fraction *= 2;
int bit = (int)fraction;
printf("%d", bit);
fraction -= bit;
}
printf("n");
}
int main() {
double num;
int precision = 10; // 设置精度
printf("请输入一个十进制小数: ");
scanf("%lf", &num);
decimalToBinaryFraction(num, precision);
return 0;
}
```
三、注意事项
整数范围: 上述方法适用于0-32767之间的整数(需使用16位数组存储)。对于更大数值,建议使用动态内存分配或字符串处理。 小数精度
通过以上方法,可以灵活实现十进制与二进制之间的转换。