Учитывая очень длинный двоичный код, преобразуйте его в десятичный

Во-первых, это часть моего hw. Во-вторых, это только часть, поэтому я был бы очень признателен за любые подсказки.

Я реализовал своего рода класс BigInt, который хранит числа как последовательности нулей и единиц, а десятичные числа хранит как двоичные.

Мой класс умеет складывать числа и умножать их.

Хорошо, но когда я умножаю два больших числа, я получаю огромное число.

Мой вопрос: учитывая действительно очень длинное двоичное число, как мне преобразовать его обратно в десятичное?

Я нашел кое-что о делении на 10, но я не уверен, если это мой случай... Или это так, и мне нужно реализовать двоичное деление?

Спасибо...


person RaS    schedule 24.03.2014    source источник
comment
Какой желаемый формат? Вы хотите иметь float/double, близкое к вашему числу? Вы хотите иметь точное число в виде строки? Вы можете просто создать общую версию своего класса, работающую с другой базой, например. 2 или 10.   -  person tgmath    schedule 24.03.2014
comment
Я хочу распечатать точное (десятичное) число в виде строки. Я попытался поискать еще немного и нашел алгоритм двойного баловства. Что вы думаете об этом? Могу ли я использовать его?   -  person RaS    schedule 25.03.2014


Ответы (1)


двоичный код означает основание 2, поэтому, если у вас есть, например, 10100 и вам нужно основание 10, вы можете применить следующий шаблон, переходя от последнего элемента к первому (справа налево): 2^0*0 + 2^1*0 + 2^2*1 + 2^3*0 + 2^4*1 = 20 вы просто возводите 2 в степень a, начиная с 0 до length_of_binary_num-1 и вы умножаете эту мощность на двоичную цифру из вашей строки (справа налево), или у вас есть дополнительный метод на

Преобразовать двоичное число в десятичное

также я бы рекомендовал использовать строку для двоичного кода, поскольку двоичные цифры больше похожи на строки, чем на целые числа.

person Tudor    schedule 24.03.2014
comment
Проблема в том, что я не могу использовать этот метод, потому что я не могу суммировать такие огромные числа - мне нужно вывести число, но я не могу их суммировать, потому что нет типа, который может хранить такие огромные числа. ... - person RaS; 24.03.2014