C语言如何手动转换十进制到二进制?
时间: 2024-10-10 18:10:28 浏览: 36
在C语言中,手动将十进制转换为二进制通常涉及到循环和整除操作。下面是一个简单的方法,通过不断除以2并记录余数来实现:
```c
#include <stdio.h>
#include <string.h>
char* dec_to_bin(int num) {
char bin[33]; // 32位足够存储最大31位的二进制数(包括前导0)
memset(bin, '0', sizeof(bin)); // 初始化bin为全0
if (num == 0) {
bin[0] = '0';
return bin;
}
int i = 0;
while (num > 0) {
bin[i++] = num % 2 + '0'; // 加上'0'是为了把数字转为字符形式
num /= 2; // 除以2并向下取整
}
bin[i] = '\0'; // 添加结束符
// 反转数组,因为在计算过程中从低位到高位,最终需要的是高位在前
倒序_array(bin);
return bin;
}
void倒序_array(char arr[]) {
int start = 0, end = strlen(arr) - 1;
while (start < end) {
char temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
int main() {
int decimal = 42;
char* binary = dec_to_bin(decimal);
printf("Decimal %d in binary is %s\n", decimal, binary);
free(binary); // 注意释放动态内存
return 0;
}
```
这段代码会输出:`Decimal 42 in binary is 101010`。
阅读全文