二进制与十进制互相转换 C语言
时间: 2024-09-10 21:21:54 浏览: 64
在C语言中,二进制和十进制之间的转换可以通过使用标准库函数和位操作来实现。下面是一个简单的介绍和示例代码:
1. 十进制转二进制:
在C语言中没有直接的函数可以将十进制数转换为二进制字符串,但可以通过位运算和循环打印的方式实现。下面是一个简单的转换函数示例:
```c
#include <stdio.h>
#include <string.h>
void DecimalToBinary(int decimal, char *binary) {
int remainder;
int index = 0;
// 保证传入的是非负整数
if(decimal < 0) {
binary[index++] = '-';
decimal = -decimal;
}
// 循环直到商为0
while(decimal > 0) {
remainder = decimal % 2;
decimal = decimal / 2;
binary[index++] = '0' + remainder;
}
// 因为是从低位到高位打印,所以需要反转字符串
for(int i = 0; i < index / 2; i++) {
char temp = binary[i];
binary[i] = binary[index - i - 1];
binary[index - i - 1] = temp;
}
// 添加字符串结束符
binary[index] = '\0';
}
int main() {
int decimalNumber = 10; // 可以更改这个值来转换不同的十进制数
char binaryString[64]; // 假设二进制数不会超过64位
DecimalToBinary(decimalNumber, binaryString);
printf("十进制数 %d 的二进制表示为: %s\n", decimalNumber, binaryString);
return 0;
}
```
2. 二进制转十进制:
可以通过计算每个二进制位的权重来实现转换,权重为2的幂次。
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int BinaryToDecimal(const char *binary) {
int decimal = 0;
int length = strlen(binary);
int power = 0;
// 遍历二进制字符串
for(int i = length - 1; i >= 0; i--) {
// 当前字符为'1'时,增加相应的权重
if(binary[i] == '1') {
decimal += (int)pow(2, power);
}
power++;
}
return decimal;
}
int main() {
const char *binaryNumber = "1010"; // 可以更改这个值来转换不同的二进制数
int decimal = BinaryToDecimal(binaryNumber);
printf("二进制数 %s 的十进制表示为: %d\n", binaryNumber, decimal);
return 0;
}
```
这些示例代码展示了如何在C语言中实现十进制与二进制的互相转换。需要注意的是,二进制转十进制的方法计算了每个位的权重,而十进制转二进制则通过不断除以2并记录余数的方式进行。
阅读全文