在C语言中实现二进制转十进制的方法主要有以下两种:
一、逐位计算法(推荐)
通过遍历二进制字符串,从右往左逐位计算其对应的十进制值。具体步骤如下:
输入处理:
使用`scanf`或`fgets`获取二进制字符串(需确保仅包含`0`和`1`)。
遍历计算:
从字符串末尾开始,将每个字符转换为数字(`'0'`→0,`'1'`→1),并乘以2的幂次方(幂次从0开始递增)。
累加结果:
将所有计算结果累加得到十进制数。
示例代码:
```c
include include int binaryToDecimal(char *binary) { int decimal = 0; int length = strlen(binary); for (int i = 0; i < length; i++) { int bit = binary[i] - '0'; decimal += bit << (length - 1 - i); } return decimal; }
int main() {
char binary;
printf("请输入二进制数: ");
scanf("%s", binary);
int decimal = binaryToDecimal(binary);
printf("十进制数为: %dn", decimal);
return 0;
}
```
二、使用`atoi`函数(简化方法)
C标准库提供了`atoi`函数,可直接将二进制字符串转换为十进制整数。但需注意:
该函数仅支持以`0b`或`0B`开头的合法二进制字符串(如`0b1010`);
若输入包含非二进制字符,函数会返回0。
示例代码:
```c
include int main() { char binary; printf("请输入二进制数(以0b开头): "); scanf("%s", binary); int decimal = atoi(binary); printf("十进制数为: %dn", decimal); return 0; } ``` 注意事项 输入验证:建议使用逐位计算法,并添加输入校验(如检查是否仅含`0`和`1`); 效率与可读性:逐位计算法更直观,适用于任意长度的二进制数;`atoi`方法更简洁,但受限于函数功能。