编写无符号数的转换: unsigned int unsignedToValue(char binary[],int n); 要求在main中从屏幕读入n个二进制数即0或者是1,调用unsignedToValue函数返回此二进制数代表的无符号数的真值。
时间: 2024-03-21 13:44:06 浏览: 14
好的,我可以帮你解答这个问题。
首先,我们需要了解一下如何将二进制数转换成十进制数。对于一个二进制数,每一位上的数字只有0或1,表示的含义与它所处的位数有关。例如,二进制数1011,它的各位含义如下:
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0
= 8 + 0 + 2 + 1
= 11
因此,将二进制数转换成十进制数的方法就是将每一位上的数字乘以对应的权值,然后将它们相加即可。
接下来,我们可以编写unsignedToValue函数来实现从二进制数转换成十进制数的功能。函数定义如下:
```C++
unsigned int unsignedToValue(char binary[], int n) {
unsigned int result = 0; // 记录最终的十进制数
int weight = 1; // 记录当前位的权值
for (int i = n - 1; i >= 0; i--) {
result += (binary[i] - '0') * weight; // 将当前位上的数字乘以对应的权值,然后累加到result中
weight *= 2; // 权值乘以2,以便计算下一位
}
return result;
}
```
函数中的参数binary是一个字符数组,它存储了n个二进制数,每个二进制数都是字符'0'或'1'。参数n表示二进制数的位数。函数首先定义了一个变量result用于记录最终的十进制数,以及一个变量weight用于记录当前位的权值。然后,从最高位开始遍历二进制数,将每一位上的数字乘以对应的权值,然后累加到result中。最后返回result即可。
在main函数中,我们可以先从屏幕读入n个二进制数,然后调用unsignedToValue函数将它们转换成十进制数。代码如下:
```C++
#include <iostream>
using namespace std;
unsigned int unsignedToValue(char binary[], int n);
int main() {
int n;
char binary[100];
cout << "请输入二进制数的位数:";
cin >> n;
cout << "请输入" << n << "个二进制数(每个二进制数只能是0或1):" << endl;
for (int i = 0; i < n; i++) {
cin >> binary[i];
}
unsigned int value = unsignedToValue(binary, n);
cout << "转换成十进制数的结果为:" << value << endl;
return 0;
}
```
在这段代码中,首先从屏幕读入二进制数的位数n和n个二进制数,然后调用unsignedToValue函数将它们转换成十进制数,并输出结果。