Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Вся полезность вашего подхода по переводу между системами счисления нивелируется необходимостью операций в этой системе счисления. Грубо говоря, вот вы хотите перевести число 90 из десятичной в систему счисления с основанием 7. По вашему алгоритму нужно посчитать (9*10)+0, что в сс7 12*13. И как это считать? Столбиком, с таблицей умножения в сс7?Да. При этом умножение/сложение намного проще деления. Но нам и действий нужно выполнить гораздо больше, чем в классическом переводе через деление столбиком. В-общем, необходимы O(n) — оценки, чтобы понять, имеет ли какую-то полезность предложенный алгоритм (возможно, что и нет).
Просто прикиньте сколько вам нужно памяти для перевода из 2000-ичной системы счисления в 257-ичнуюА в чём проблема? Ради максимальной скорости алгоритмы математических пакетов для чисел произвольной длины работают с 232 или с 264-ричными системами. 1 цифра — 1 DWORD/QWORD. Если цифра помещается в int, как в случае с 2000-ичной системой, с ней работать не сложнее, чем с 10-тичной.
Например, для чисел вполне очевидно, что 1 || 23 != (1*10+23).
У вас для каждого основания счисления получается разная конкатенация. Этакое параметризованное семейство бинарных операций
a ‖ b = (a * 10) + b - верно только в случае если это b >= 0 и b < 10.
В общем случае десятичной системы a ‖ b = a * 10 ^ [lg(b)] + b,
где [ ] - целая часть числа.
Аналогично для других систем счисления, будет множитель и основание логарифма меняться.
Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления