在C语言中,二进制转换为十进制的方法主要有以下两种:
一、使用 `atoi` 函数(推荐)
这是最简单的方法,适用于二进制字符串转换为十进制整数。代码示例如下:
```c
include include int binaryToDecimal(char *binary) { int decimal = 0; for (int i = 0; i < strlen(binary); i++) { int bit = binary[i] - '0'; decimal = decimal * 2 + bit; } return decimal; } int main() { char binary; printf("请输入一个二进制数: "); scanf("%s", binary); int decimal = binaryToDecimal(binary); printf("对应的十进制数为: %dn", decimal); return 0; } ``` 注意事项:`atoi` 函数会将二进制字符串直接转换为十进制数,若字符串包含非数字字符则返回0。
二、使用位运算(推荐)
通过逐位计算权重并累加,效率更高且适用于整数转换。代码示例如下:
```c
include
int binaryToDecimal(int binary) {
int decimal = 0;
int base = 0;
while (binary > 0) {
int lastDigit = binary % 10;
decimal += lastDigit * (1 << base);
binary /= 10;
base++;
}
return decimal;
}
int main() {
int binary;
printf("请输入一个二进制数: ");
scanf("%d", &binary);
printf("对应的十进制数为: %dn", binaryToDecimal(binary));
return 0;
}
```
说明:`1 << base` 表示2的`base`次方,通过位移运算快速计算权重。
三、其他方法
通过输入二进制数组逐位计算,适用于固定长度(如8位)的二进制数。
将转换逻辑封装为函数,结合递归或辅助函数实现。
总结:优先推荐使用 `atoi` 函数或位运算方法,前者简单易用,后者效率更高。根据实际需求选择合适的方式即可。