Итак, я видел следующее решение для двоичного преобразования в десятичное целое, и я вижу, что он работает, но я бы очень хотел понять теорию алгоритма.Теория преобразования двоичных чисел в десятичные числа
#include<iostream>
using namespace std;
int main()
{
long bin, dec = 0, rem, num, base = 1;
cout << "Enter the binary number(1s and 0s) : ";
cin >> num;
bin = num;
while (num > 0)
{
rem = num % 10;
dec = dec + rem * base;
base = base * 2;
num = num/10;
}
cout << "The decimal equivalent of " << bin << " : " << dec << endl;
return 0;
}
Таким образом, мы добавляем оставшуюся часть сдвинутого ввода и умножив его на основании положения, но я не очень понимаю, как это заканчивается добавление к правильному ответу.
Сообщите мне, если есть что-нибудь, что я могу предоставить, чтобы помочь.
Благодаря
Вы должны пройти через код с помощью отладчика, чтобы вы могли видеть, как он работает. Или сделайте это на карандаше и бумаге. Это должно дать вам лучшее представление о том, что происходит. – NathanOliver
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Подсказка: на самом деле 'cin >> num' считывает десятичное числовое представление с пользовательского ввода, а не двоичное представление. Это выглядит очень сложным способом для чтения двоичного представления 'std :: string' и передать его в конструктор' 'std :: bitset''. –