在C语言中,将二进制数转换为十进制数主要有以下两种常见方法,具体实现方式如下:
一、使用 `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; } ``` 说明:`atoi` 函数将二进制字符串逐位转换为数字,并按权展开计算十进制值。
二、逐位计算法(手动实现)
适用于需要更高控制力的场景,支持处理任意长度的二进制数。
```c
include include int binaryToDecimal(const char *binary) { int decimal = 0; int power = 0; for (int i = strlen(binary) - 1; i >= 0; i--) { int bit = binary[i] - '0'; // 将字符转换为数字 decimal += bit * (1 << power); // 使用位移操作计算2的幂次 power++; } return decimal; } int main() { char binary; printf("请输入一个二进制数: "); scanf("%s", binary); int decimal = binaryToDecimal(binary); printf("对应的十进制数为: %dn", decimal); return 0; } ``` 说明:通过循环从右向左遍历二进制字符串,使用位移操作 `1 << power` 计算每一位的十进制值,并累加。
三、其他注意事项
输入处理:
若输入为二进制数(如 `1011`),需确保输入格式正确,避免包含非二进制字符(如 `0` 或 `1`)。
数据类型选择:
根据二进制数的长度选择合适的数据类型(如 `int` 或 `long long`),避免溢出。
以上方法均可实现二进制到十进制的转换,选择时可根据具体需求(如输入格式、性能要求)决定。