Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Длинная арифметика и основание 2^32

Хочется хранить большие числа в системе счисления по основанию 2^32 для увеличения скорости работы и уменьшения объема необходимой памяти. Вопрос в том, как преобразовывать это всё в десятичную систему для ввода-вывода?
Для преобразования из двоичной нашелся double dabble. Для преобразования из десятичной пока нашелся лишь reversed double dabble, реализованный в minecraft. И эта ситуация наводит меня на мысль, что я делаю что-то не так.
В итоге вопрос: как оптимально хранить длинные числа (правильно ли я хочу использовать систему счисления по основанию 2^32) и как оптимально переводить запись в десятичную и из нее?
Пояснение: задание отчасти «учебное» — для себя. Так что вариант «выбросить велосипед» не принимается. Вариант использовать основание 10^9 хорош, но я приберегу его для олимпиад: если бы я делал что-то серьезное, конечно использовал бы GMP или boost.


Ответ

Если вам нужно как проще - используйте лучше основание 10^9, на олимпиадах я всегда именно его и использовал.
А если хочется максимально эффективно записывать числа - то "школьный" алгоритм преобразования системы счисления делением в помощь.

Комментариев нет:

Отправить комментарий