C语言中如何将二进制数转换为十进制数
时间: 2024-05-14 22:12:48 浏览: 104
可以使用循环或位运算来将二进制数转换为十进制数。
1. 循环法
将二进制数按位分解,从低位到高位依次乘以2的幂,然后将乘积相加即可得到十进制数。
例如,二进制数1101转换为十进制数的过程如下:
1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 1 + 0 + 4 + 8 = 13
具体的C代码如下:
```c
#include <stdio.h>
int main()
{
int binary = 1101; // 二进制数
int decimal = 0; // 十进制数
int base = 1; // 2的幂
while (binary > 0)
{
int bit = binary % 10; // 取二进制数的最低位
decimal += bit * base; // 将最低位乘以2的幂,并累加到十进制数上
binary /= 10; // 将二进制数右移一位
base *= 2; // 增加2的幂
}
printf("二进制数1101对应的十进制数为:%d\n", decimal);
return 0;
}
```
2. 位运算法
对于一个二进制数,每一位都可以表示成2的幂次方,即2^0、2^1、2^2、2^3……以此类推。因此,我们可以使用位运算来实现二进制数转换为十进制数。
例如,二进制数1101转换为十进制数的过程如下:
(1*2^0) + (0*2^1) + (1*2^2) + (1*2^3) = 1 + 0 + 4 + 8 = 13
具体的C代码如下:
```c
#include <stdio.h>
int main()
{
int binary = 1101; // 二进制数
int decimal = 0; // 十进制数
int bit = 0; // 二进制数的每一位对应的值
for (int i = 0; binary > 0; i++)
{
bit = binary & 1; // 取二进制数的最低位
decimal += bit << i; // 将最低位左移i位,并累加到十进制数上
binary >>= 1; // 将二进制数右移一位
}
printf("二进制数1101对应的十进制数为:%d\n", decimal);
return 0;
}
```
阅读全文