如何将十进制数转换为其对应的二进制表示并输出?
时间: 2024-12-02 09:18:57 浏览: 9
在C语言中,你可以使用位运算符和循环结构来将十进制数转换为二进制字符串并输出。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 函数定义,将十进制数转换为二进制字符串并返回
char* decimal_to_binary(int num) {
char binary[33]; // 最大支持32位整数(2^31 - 1)
int i = 0;
while (num > 0) {
binary[i] = num % 2 + '0'; // 取余并将结果转换为字符('0'对应0,'1'对应1)
num /= 2; // 向右移位
i++;
}
binary[i] = '\0'; // 添加字符串结束符
// 将数组反转,因为原始的索引从后向前增加
reverse(binary, i);
return binary;
}
// 反转字符串函数
void reverse(char str[], int len) {
int start = 0, end = len - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
int decimal_num;
printf("Enter a decimal number: ");
scanf("%d", &decimal_num);
// 输出二进制数
char* binary_str = decimal_to_binary(decimal_num);
printf("Binary representation of %d is: %s\n", decimal_num, binary_str);
free(binary_str); // 注意释放动态分配的内存
return 0;
}
```
在这个程序中,`decimal_to_binary` 函数首先创建一个足够大的数组存储二进制数,然后用while循环逐位提取十进制数的二进制表示并添加到字符串的前面。最后,调用`reverse`函数将字符串反转,因为我们通常希望最右边的二进制位在前。
运行这个程序,输入一个十进制数,它会输出对应的二进制表示。记得在结束后要手动释放`binary_str`所指向的内存。
阅读全文