十进制二进制互相转换 c语言
时间: 2024-09-09 12:09:46 浏览: 66
在C语言中,可以编写函数来实现十进制和二进制之间的互相转换。以下是两种转换的基本方法:
1. 十进制转二进制:
- 最直观的方法是通过不断地除以2并取余数的方式来得到二进制表示。具体做法是将十进制数不断除以2,然后将余数倒序排列,这样就得到了二进制数。
- 另一种方法是利用C语言的库函数,如` sprintf()` 或 `__builtinbitset()`(GCC编译器特有),可以直接将十进制数转换为二进制字符串。
2. 二进制转十进制:
- 通过遍历二进制字符串(从低位到高位),将每一位的值(0或1)乘以2的幂次,然后将这些结果累加起来,得到最终的十进制数。
- 同样,也可以使用`strtol()`(字符串转换为长整型数)这样的库函数来进行转换。
以下是一个简单的C语言代码示例,分别实现了十进制转二进制和二进制转十进制的函数:
```c
#include <stdio.h>
#include <math.h>
// 十进制转二进制
void DecimalToBinary(int decimal) {
int binaryNum[32]; // 假设二进制数不超过32位
int i = 0;
while (decimal > 0) {
binaryNum[i] = decimal % 2;
decimal = decimal / 2;
i++;
}
// 打印二进制数(倒序打印数组)
for (int j = i - 1; j >= 0; j--) {
printf("%d", binaryNum[j]);
}
printf("\n");
}
// 二进制转十进制
int BinaryToDecimal(const char *binary) {
int decimal = 0;
int length = strlen(binary);
for (int i = 0; i < length; i++) {
decimal += (binary[i] - '0') * pow(2, length - i - 1);
}
return decimal;
}
int main() {
int decimal;
char binary[33]; // 假设二进制字符串不超过32位,加上结束符'\0'
// 用户输入
printf("请输入十进制数: ");
scanf("%d", &decimal);
printf("十进制数 %d 转换为二进制为: ", decimal);
DecimalToBinary(decimal);
printf("请输入二进制数: ");
scanf("%s", binary);
printf("二进制数 %s 转换为十进制为: %d\n", binary, BinaryToDecimal(binary));
return 0;
}
```
阅读全文