二进制与十进制互相转换 C语言 同一套代码
时间: 2024-09-11 09:16:28 浏览: 48
在C语言中,可以通过编写一套代码来实现二进制与十进制之间的互相转换。以下是一个简单的实现方法:
1. 十进制转二进制:
- 使用除2取余法,将十进制数反复除以2,并记录每次的余数,最后将余数逆序排列即得到二进制表示。
```c
#include <stdio.h>
void decToBin(int num) {
unsigned int temp = num;
unsigned int remainder[32]; // 假设32位足够存储所有位
int index = 0;
// 处理0的情况
if (temp == 0) {
printf("0");
return;
}
while (temp != 0) {
remainder[index++] = temp % 2; // 记录余数
temp /= 2; // 除以2
}
// 输出结果
for (int i = index - 1; i >= 0; i--) {
printf("%d", remainder[i]);
}
}
int main() {
int num;
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("十进制数 %d 的二进制表示为: ", num);
decToBin(num);
printf("\n");
return 0;
}
```
2. 二进制转十进制:
- 从二进制数的最低位开始,将每一位乘以2的幂次方,然后将结果相加得到十进制数。
```c
#include <stdio.h>
#include <string.h>
int binToDec(const char *binStr) {
int length = strlen(binStr);
int decimal = 0;
for (int i = 0; i < length; i++) {
if (binStr[i] == '1') {
decimal += (int)pow(2, length - i - 1);
}
}
return decimal;
}
int main() {
char binStr[33]; // 假设32位足够存储所有位
printf("请输入一个二进制数:");
scanf("%32s", binStr);
printf("二进制数 %s 的十进制表示为: %d\n", binStr, binToDec(binStr));
return 0;
}
```
请注意,二进制转十进制的函数中使用了`pow`函数,这需要包含`math.h`头文件,并且在实际使用中可能需要对输入进行验证,确保其为有效的二进制字符串。
阅读全文