
智启星辰为您分享以下优质知识
在C语言中,十进制转二进制主要有以下两种常见方法,均基于“除2取余,逆序排列”的原理:
一、使用位运算符(推荐)
通过右移运算符和与运算符逐位提取二进制位,最终将结果反转。
步骤:
1. 输入十进制数,初始化空字符串存储结果。
2. 使用循环右移数位,通过 `i & 1` 判断最低位是否为1,将结果存入字符串。
3. 循环结束后反转字符串,得到正确二进制表示。
示例代码:
```c
include
include
void decimalToBinary(int num) {
char binary = "";
while (num >
0) {
binary[32 - (num & 1)] = (num & 1) + '0';
num >
>
= 1;
}
binary = '0'; // 添加字符串结束符
for (int i = 0; binary[i] != '0'; i++) {
printf("%c", binary[i]);
}
}
int main() {
int num;
scanf("%d", &num);
decimalToBinary(num);
return 0;
}
```
二、使用数组存储余数(通用方法)
通过循环除以2记录余数,最后倒序输出。
步骤:
1. 输入十进制数,初始化数组存储余数。
2. 重复除以2操作,将余数存入数组对应位置。
3. 从高位到低位遍历数组输出结果。
示例代码:
```c
include
void decimalToBinary(int num) {
int a = {0};
int i = 0;
while (num >
0) {
a[i++] = num % 2;
num /= 2;
}
for (int j = i - 1; j >
= 0; j--) {
printf("%d", a[j]);
}
}
int main() {
int num;
scanf("%d", &num);
decimalToBinary(num);
return 0;
}
```
说明:
位数选择:示例中数组大小为33,可处理0-32767范围内的整数。若需处理更大数,可动态分配内存或使用位运算优化。
特殊情况:输入为0时,直接输出"0";负数处理需额外逻辑(本示例仅考虑非负整数)。
以上方法均可实现十进制到二进制的转换,选择时可根据具体需求(如效率、可读性)调整实现方式。