Программа неправильно переводит бинарное число в десятичную систему
Программа умножает не на те степени двойки, которые нужны
#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');