手动输入的最多为31位二进制数转十进制数 C语言 数组实现
时间: 2024-05-06 12:18:08 浏览: 94
可以使用数组来实现将二进制数转换为十进制数的操作,具体实现如下:
```c
#include <stdio.h>
int main() {
int bin[32], dec = 0, i, j;
char str[32];
printf("请输入一个最多为31位的二进制数:");
scanf("%s", str);
// 将二进制数转换为整型数组
for (i = 0; str[i] != '\0'; i++) {
bin[i] = str[i] - '0';
}
// 计算十进制数
for (j = i - 1; j >= 0; j--) {
dec += bin[j] << (i - j - 1);
}
printf("转换后的十进制数为:%d", dec);
return 0;
}
```
程序首先定义了一个长度为32的整型数组`bin`,以及一个整型变量`dec`用于存储计算后的十进制数。
接着,通过`scanf`函数获取用户输入的二进制数,并将其存储在字符数组`str`中。
然后,程序使用一个循环将字符数组`str`中的每一位字符转换为整型数值,并存储在整型数组`bin`中。
最后,程序使用另一个循环计算二进制数对应的十进制数,并将结果存储在`dec`变量中。具体操作是通过左移位运算符`<<`将二进制数每一位的值乘上对应位的权重,然后将所有结果相加得到十进制数。
最后,程序输出计算出来的十进制数。
相关问题
31位二进制数转十进制数 C语言 数组实现
可以使用以下代码实现将31位二进制数转换为十进制数:
```c
#include <stdio.h>
int main() {
int binary[31] = {1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1}; // 输入二进制数
int decimal = 0;
int i;
for (i = 0; i < 31; i++) {
decimal = decimal * 2 + binary[i];
}
printf("二进制数转换为十进制数为:%d\n", decimal);
return 0;
}
```
在这个例子中,我们将31位的二进制数存储在名为binary的数组中,然后使用for循环将其转换为十进制数。我们从最高位开始,将每个二进制位乘以2的幂次方,然后将其相加。在循环结束时,我们将得到十进制数的值并将其打印出来。
二进制数转十进制数 C语言 数组实现
以下是C语言代码实现二进制数转换成十进制数的过程:
```
#include <stdio.h>
int main()
{
int binary[32];
int decimal = 0, i = 0, j;
long long n; // 假设输入的二进制数的位数不超过32
printf("请输入二进制数:");
scanf("%lld", &n);
while (n > 0)
{
binary[i] = n % 10;
n /= 10;
i++;
}
for (j = 0; j < i; j++)
{
decimal += binary[j] * (1 << j);
}
printf("转换为十进制数:%d\n", decimal);
return 0;
}
```
代码分析:
1.首先定义了一个长度为 32 的数组 binary 存储二进制数每一位的值,以及一个整型变量 decimal 存储转换后的十进制数。
2.接着使用 scanf() 函数获取输入的二进制数 n。
3.然后使用 while 循环将 n 每一位上的数字存储到数组 binary 中,并记录二进制数的位数 i。
4.最后使用 for 循环将二进制数转换为十进制数并存储到 decimal 中。在循环中使用了左移运算符(<<),即将数字向左移动 j 位,相当于将 2 的 j 次方乘以 binary[j]。
5.最后打印出转换后的十进制数 decimal。
注意事项:
1.以上代码中的二进制数 n 是以长整型 long long 类型存储的,因为二进制数的位数可能很大,如果使用 int 类型可能会导致溢出。
2.要理解二进制转换为十进制的原理,即每一位上的数字乘以 2 的相应次方数,然后相加。
阅读全文