在C语言中,二进制转十进制的方法主要有以下三种实现方式,结合权威性和时效性信息整理如下:
一、使用`atoi`函数(推荐)
`atoi`函数可快速将二进制字符串转换为十进制整数,适用于输入为字符串的情况。
```c
include include int binaryToDecimal(char *binary) { int decimal = 0; for (int i = 0; binary[i] != '0'; 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; } ``` 二、逐位计算法(通用方法) 通过逐位处理二进制数,使用乘2加权求和的方式实现转换,适用于任意长度的二进制数。 ```c int binaryToDecimal(char *binary) { int decimal = 0; int length = strlen(binary); for (int i = 0; i < length; 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; } ``` 三、位运算符法(高效实现) 利用位运算符(如`&`、`>>`)逐位提取二进制位并计算十进制值,效率较高。 ```c 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 - i - 1); } return decimal; } int main() { char binary; printf("请输入二进制数: "); scanf("%s", binary); int decimal = binaryToDecimal(binary); printf("对应的十进制数为: %dn", decimal); return 0; } ``` 注意事项
若输入为二进制数(如`1010`),需确保字符串仅包含`0`和`1`,否则`atoi`可能返回错误结果。
上述方法未处理负数,若需支持负数,需在函数中增加符号判断逻辑。
位运算符法在处理长二进制数时效率更高,推荐优先使用。
以上方法均可实现二进制到十进制的转换,选择时可根据具体需求(如输入形式、效率要求)进行选择。