Программа неправильно переводит бинарное число в десятичную систему

Программа умножает не на те степени двойки, которые нужны

#include <iostream>

using namespace std;

int main() {
    long long dec = 0;
    string bin;

    cout << "Enter a number in binary: ";//Ввод бинарного числа
    cin >> bin;

    //Перевод
    for (int i = 1; i <= bin.length(); i++) {
        if (bin[i] == '1') { dec += pow(2, bin.length() - i);}
    }
    cout << "\nDecimal number: " << dec << endl;//Вывод числа в 10СС

    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Ну ведь нумерация элементов начинается с 0, а у вас?

for (int i = 1; 

Ну, и сам метод оставляет желать лучшего. Хотя бы потому, что pow дает значение типа double... Вот так лично мне нравится куда больше:

for (int i = 0; i < bin.length(); i++)
    dec = dec*2 + (bin[i]-'0');
→ Ссылка