在C语言中,将数组转换为二进制数通常涉及以下两种常见方法:
一、使用除2取余法(倒序存储)
通过不断将十进制数除以2,记录余数并存储到数组中,最后倒序输出得到二进制表示。
实现步骤
- 输入一个十进制数,初始化一个足够大的数组(如16位)用于存储余数。 - 使用`while`循环,将数除以2,余数存入数组对应位置,商作为下一次除数,直到商为0。 - 倒序遍历数组输出二进制数,注意处理前导零的情况。
示例代码
```c
include
int main() {
int n, i, a = {0};
printf("输入一个0~32767之间的数字: ");
scanf("%d", &n);
for (i = 0; n > 0; i++) {
a[i] = n % 2;
n /= 2;
}
printf("二进制数: ");
for (i = i - 1; i >= 0; i--) {
printf("%d", a[i]);
}
return 0;
}
```
二、使用移位运算符
核心思路
通过不断右移操作和按位与运算提取二进制位,存储到数组中后倒序输出。
实现步骤
- 输入一个十进制数,初始化一个数组用于存储二进制位。 - 使用`for`循环,通过`n >> i`右移操作和`n & 1`提取最低位,存入数组对应位置。 - 倒序遍历数组输出二进制数。
示例代码
```c
include
void decimalToBinary(int decimalNum, int binaryArr[], int size) {
for (int i = 0; i < size; i++) {
binaryArr[i] = (decimalNum >> i) & 1;
decimalNum >>= 1;
}
}
int main() {
int n, i;
printf("请输入一个十进制数: ");
scanf("%d", &n);
int a = {0};
decimalToBinary(n, a, sizeof(a));
printf("二进制数: ");
for (i = sizeof(a) - 1; i >= 0; i--) {
printf("%d", a[i]);
}
return 0;
}
```
注意事项
数组大小:
根据输入范围选择合适大小,如0~32767需16位数组,其他范围可调整。- 前导零处理:倒序输出时需跳过前导零,或使用格式化输出控制位数。- 数据类型:建议使用`unsigned int`处理无符号数,避免符号位影响结果。