c语言中如何进行十进制和二进制之间的相互转化,请给出代码
时间: 2024-09-17 14:03:39 浏览: 52
在C语言中,我们可以使用标准库函数`itoa()`和`atol()`来进行十进制到二进制的转换,反之则可以使用字符串处理函数配合位运算来进行。
**将十进制转为二进制:**
```c
#include <stdio.h>
#include <stdlib.h>
// 将整数转换为二进制字符串
char* dec_to_bin(int num) {
static char bin[64]; // 存储结果的数组
int i = 0;
while (num > 0) {
bin[i++] = num % 2 + '0'; // 取余数并加上 ASCII 码的 0(即 '0')
num /= 2; // 整除 2
}
bin[i] = '\0'; // 添加终止符
// 反转字符串,因为原始的顺序是倒序的
for (int j = 0; j < i / 2; j++) {
char temp = bin[j];
bin[j] = bin[i - j - 1];
bin[i - j - 1] = temp;
}
return bin;
}
int main() {
int decimal = 10;
char *binary = dec_to_bin(decimal);
printf("Decimal %d in binary is %s\n", decimal, binary);
free(binary); // 预防内存泄漏
return 0;
}
```
**将二进制转为十进制:**
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 字符串转化为整数(只针对二进制)
int bin_to_dec(const char* str) {
int result = 0;
int base = 1;
int len = strlen(str);
for (int i = len - 1; i >= 0; i--) {
if (str[i] == '1') {
result += base;
}
base *= 2;
}
return result;
}
int main() {
const char* binary_str = "1010";
int decimal = bin_to_dec(binary_str);
printf("Binary %s in decimal is %d\n", binary_str, decimal);
return 0;
}
```
阅读全文