如何用c语言把十进制改成二进制
时间: 2024-11-09 14:22:58 浏览: 30
在C语言中,将十进制整数转换成二进制可以使用取余法(也称作除2取余法),配合while循环实现。以下是简单的步骤:
1. 定义一个数组用于存储二进制结果,数组长度比最大可能位数多一位(因为需要一个位置存储符号)。
2. 取输入数值的绝对值,用2去除,并记录余数。
3. 把余数添加到结果数组的末尾。
4. 如果得到的余数不是0,继续除以2并取余,直到余数为0。
5. 最后根据原数的正负性调整数组的第一个元素(通常是最高位)。
这里是一个示例函数,它接受一个整数作为输入,返回一个字符数组表示的二进制字符串:
```c
#include <stdio.h>
#include <string.h>
char* decimalToBinary(int num) {
int binary[32]; // 假设最大32位
int i = 0;
while (num > 0) {
binary[i] = num % 2; // 取余
num /= 2; // 除以2
i++;
}
if (binary[0] == 0) { // 去掉前导零
char binaryStr[32];
int j = 0;
for (int k = i - 1; k >= 0; k--) {
binaryStr[j++] = (binary[k] ? '1' : '0');
}
binaryStr[j] = '\0';
return binaryStr;
} else {
char binaryStr[32];
int j = 1;
for (int k = i - 1; k >= 0; k--) {
binaryStr[j++] = (binary[k] ? '1' : '0');
}
binaryStr[j] = '-';
j++;
binaryStr[j] = '\0';
return binaryStr;
}
}
int main() {
int decNum = 10;
char* binary = decimalToBinary(decNum);
printf("十进制 %d 转换成二进制是:%s\n", decNum, binary);
free(binary); // 释放内存
return 0;
}
```
阅读全文