Перевод чисел из одной системы счисления в другую.

Всякий раз, когда используется для вычислений система счисления, отличная от фактической, необходимо выполнить перевод 10 => p, p => 10.

Этот перевод может быть выполнен:

1. вручную,

2. на ЭВМ (с помощью специальных программ).

Во всех этих случаях принципиально используется различные подход и методы. Мы рассмотрим, прежде всего, методы, направленные на ручной перевод.

Итак, имеем дело с позиционной системой счисления с основанием "p", с естественными весами разрядов.

В качестве промежуточной используется, естественно, десятичная система. Вначале число переводится из системы "p" в 10-ую, затем из10-ой в систему с нужным основанием.

Мы отступим от этого правила и воспользуемся алгоритмом непосредственного перевода из системы с основанием "p" в систему с основанием "q".

Обычно произвольное число, содержащее целую и дробную части, переводят по частям: вначале целую, затем дробную часть.

Рассмотрим перевод целых чисел:

Перевод осуществляется по следующему правилу: исходное число, записанное в системе с основанием "p" и его частные последовательно делятся на число "q", представленное в системе "p". Деление производится в системе с основанием "p" и продолжается до получения результата, меньшего "q". Первый остаток, меньший "q", дает старшую цифру числа Nq. Остатки от деления дают остальные цифры числа Nq.

 

Пример1 : необходимо перевести 3110 => 2;

Ответ 3110 = 111112

 

 

 

 

Пример 2:перевести 318 => 3; ответ :318 = 2213

 

 

Пример 3: перевести 318 => 10; ответ 318 = 2510.

 

 

 

Пример 4:

1111112 => 10; 1111112 = 6310.

 

 

Перевод дробных чисел из системы с основанием "p" в систему с основанием "q" выполняется по следующему правилу: исходное число Dp последовательно умножается на число "q", записанное в системе "p". Целые части получаемых произведений дают "p"-ые записи "q"-х цифр, начиная со старшей. Умножение производится в системе с основанием "p" до получения необходимой точности.

Пример 1:

1. перевести 0,53148 => 5; ответ 0,53148 = 0,3141...5.

 

0, 53148 58

 

 

0, 31810 210

 

Пример 2: 0,31810 => перевести 2; ответ 0,31810 = 0,01010...2