C语言二进制转十进制
时间: 2024-07-30 20:00:40 浏览: 63
在C语言中,将二进制数转换为十进制数通常涉及到从右向左遍历二进制字符串,根据权值计算每个位的贡献。具体步骤如下:
1. **初始化变量**:创建一个整型变量`decimal`来存储最终的十进制结果,并将其初始化为0。
```c
int decimal = 0;
```
2. **定义二进制数数组或指针**:假设有一个字符数组`binary_string`保存了二进制数字。
```c
char binary_string[] = "1010";
```
3. **遍历二进制串**:从数组的末尾开始(最高位),对于每一位,执行以下操作:
a. 获取当前位的数值(如果是数组,则用ASCII码减去'0',如果是字符串指针则解码)
b. 计算对应的十进制值(通常是2的位次减去1,因为二进制的权值是从右往左递增的,第一位是2^0, 第二位是2^1等)
```c
int bit_value = binary_string[strlen(binary_string) - 1] - '0';
```
c. 将该值乘以相应的权重(也就是2的幂次)并加到`decimal`上:
```c
decimal += bit_value * pow(2, (strlen(binary_string) - 1 - i));
```
这里的`i`从0开始递增,表示当前位的位置。
4. **循环结束后的处理**:如果还有剩余的未处理位,说明输入的二进制数可能不是有效的8位(如果是固定长度的话)。在这种情况下,可能需要先填充0再进行上述操作。
5. **返回十进制值**:最后,`decimal`就包含了原始二进制数的十进制形式。
```c
return decimal;
```
阅读全文