
成就儿时的梦想为您分享以下优质知识
在C语言中,将十进制数转换为二进制数主要有以下两种常见方法: 迭代法和 位运算法。以下是具体实现方式及代码示例:
一、迭代法(除2取余法)
通过不断除以2并记录余数,将余数倒序排列得到二进制数。
代码示例:
```c
include
define MAX_BITS 32
void decimalToBinary(int n) {
int binaryArr[MAX_BITS] = {0};
int i = 0;
while (n >
0) {
binaryArr[i] = n % 2;
n /= 2;
i++;
}
binaryArr[i] = 1; // 最后一位为1
for (int j = i - 1; j >
= 0; j--) {
printf("%d", binaryArr[j]);
}
}
int main() {
int num;
printf("请输入一个十进制数: ");
scanf("%d", &num);
printf("二进制数为: ");
decimalToBinary(num);
return 0;
}
```
二、位运算法
利用位移和按位与操作符直接获取二进制位。
代码示例:
```c
include
include
void decimalToBinary(int n) {
char binaryStr;
int i = 0;
while (n >
0) {
binaryStr[i++] = (n & 1) ? '1' : '0'; // 按位与操作获取最低位
n >
>
= 1; // 右移一位
}
binaryStr[i] = '0'; // 字符串结束符
printf("二进制数为: %sn", binaryStr);
}
int main() {
int num;
printf("请输入一个十进制数: ");
scanf("%d", &num);
decimalToBinary(num);
return 0;
}
```
三、使用标准库函数(itoa)
C标准库提供了`itoa`函数,可直接将整数转换为二进制字符串。
代码示例:
```c
include
include
int main() {
int num;
printf("请输入一个十进制数: ");
scanf("%d", &num);
char *binaryStr = itoa(num, 2);
printf("二进制数为: %sn", binaryStr);
free(binaryStr); // 释放动态分配的内存
return 0;
}
```
四、注意事项
上述代码假设输入为32位整数,实际应用中可根据需求调整数组大小。
上述方法未处理负数,若需支持负数,需额外处理符号位。
位运算法通常比迭代法更高效,但代码可读性稍差;迭代法更直观,适合初学者。
以上方法均可实现十进制到二进制的转换,可根据具体需求选择合适的方式。