31位二进制数转十进制数 C语言 数组实现
时间: 2023-10-24 14:06:49 浏览: 139
可以使用以下代码实现将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的幂次方,然后将其相加。在循环结束时,我们将得到十进制数的值并将其打印出来。
相关问题
手动输入的31位二进制数转十进制数 C语言 数组实现
可以使用数组来存储二进制数的每一位,并使用循环将其转换为十进制数。以下是一个示例代码:
```c
#include <stdio.h>
int main() {
int binary[31];
long long num = 0;
int i;
// 读取二进制数
printf("请输入一个31位的二进制数:");
for (i = 0; i < 31; i++) {
scanf("%1d", &binary[i]);
}
// 将二进制数转换为十进制数
for (i = 0; i < 31; i++) {
num += binary[i] * (1 << (30 - i));
}
printf("转换后的十进制数为:%lld\n", num);
return 0;
}
```
在此示例中,我们使用一个名为 `binary` 的整数数组来存储输入的二进制数。然后,我们使用一个循环来遍历该数组,并将每一位乘以对应的权重(2 的幂次方),并将其累加到变量 `num` 中,最终得到十进制数。由于31位二进制数最大值为2147483647,因此我们使用了long long类型来存储十进制数。
手动输入的最多为31位二进制数转十进制数 C语言 数组实现
可以使用数组来实现将二进制数转换为十进制数的操作,具体实现如下:
```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`变量中。具体操作是通过左移位运算符`<<`将二进制数每一位的值乘上对应位的权重,然后将所有结果相加得到十进制数。
最后,程序输出计算出来的十进制数。
阅读全文