输入一个八位2进制数,将其转化为十进制数输出为什么int i =7 而不是8,以及 value += static_cast<int>(power(2, i));这句语句是什么意思


//3_2.cpp
#include <iostream>
using namespace std;

//计算x的n次方
double power(double x, int n);

int main() {
    int value = 0;

    cout << "Enter an 8 bit binary number: ";
    for (int i = 7; i >= 0; i--) {
        char ch;
        cin >> ch;
        if (ch == '1')
            value += static_cast<int>(power(2, i));
    }
    cout << "Decimal value is " << value << endl;
    return 0;
}

double power (double x, int n) {
    double val = 1.0;
    while (n--)
        val *= x;
    return val;
}

因为是从0到7,这样就是8个数,从1到8也是可以的

value += static_cast<int>(power(2, i))

这句话的作用就是从2进制转化乘十进制的规矩嘛,要+2的n次方,前面就是强制转换成int类型,不然pow的返回值是浮点数