Вам не нужно использовать деление / по модулю. Вместо этого переберите входные цифры от низкого до высокого. Для каждой позиции цифры сначала рассчитайте, что 1000....000
будет в выходном представлении (это в 10 раз больше предыдущей степени 10). Затем умножьте этот результат на цифру и соберите в выходное представление.
Вам понадобятся процедуры, которые выполняют умножение и сложение в выходном представлении. Процедура умножения может быть записана в терминах процедуры сложения.
Пример:
Преобразование 246 (база-10) в базу-3.
Начните с инициализации выхода "аккумулятор" a = "0"
.
Инициализировать "множитель" m = "1"
.
Также обратите внимание, что 10 - это "101"
в выходном представлении.
Первая цифра 6 , то есть d = "20"
.
- Умножить:
t = d * m = "20" * "1" = "20"
.
- Накопить:
a = a + t = "0" + "20" = "20"
.
- Множитель обновления:
m = m * "101" = "1" * "101" = "101"
.
Вторая цифра 4 , то есть d = "11"
.
- Умножить:
t = d * m = "11" * "101" = "1111"
.
- Накопить:
a = a + t = "20" + "1111" = "1201"
.
- Обновить множитель:
m = m * "101" = "101" * "101" = "10201"
.
Третья цифра - 2 , то есть d = "2"
.
- Умножить:
t = d * m = "2" * "10201" = "21102"
.
- Накопить:
a = a + t = "1201" + "21102" = "100010"
.
Таким образом, ответ "100010"
.