Всякий раз, когда используется для вычислений система счисления, отличная от фактической, необходимо выполнить перевод 10 => p, p => 10.
Есть системы, дающие значительно более высокие скорости, но и требующие большего количества оборудования.
Этот перевод может быть выполнен:
Во всех этих случаях принципиально используется различные подход и методы. В связи с тем, что нам придется готовить информацию для программы вручную, мы рассмотрим, прежде всего, методы, направленные на ручной перевод.
Итак, имеем дело с позиционной системой счисления с основанием "p", с естественными весами разрядов.
В качестве промежуточной используется, естественно, десятичная система. Вначале число переводится из системы "p" в 10-ую, затем из 10-ой в систему с нужным основанием.
Мы отступим от этого правила и воспользуемся алгоритмом непосредственного перевода из системы с основанием "p" в систему с основанием "q".
Обычно произвольное число, содержащее целую и дробную части, переводят по частям: вначале целую, затем дробную часть.
Рассмотрим перевод целых чисел:
Перевод осуществляется по следующему правилу: исходное число, записанное в системе с основанием "p" и его частные последовательно делятся на число "q", представленное в системе "p". Деление производится в системе с основанием "p" и продолжается до получения результата, меньшего "q". Первый остаток, меньший "q", дает младшую цифру числа Nq. Остатки от деления дают остальные цифры числа Nq.
Пример:
3110 => 2; 3110 = 111112
318 => 3; 318 = 2213 = 2*32 + 2*31 + 1*30 = 18 + 6 + 1 = 2510.
318 => 10; 318 = 2510.
1111112 => 10; 1111112 = 6310.
Перевод дробных чисел из системы с основанием "p" в систему с основанием "q" выполняется по следующему правилу: исходное число Dp
последовательно умножается на число "q", записанное в системе "p".