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

Поскольку одно и то же число может быть записано в различных системах счисления, встает вопрос о переводе представления числа из одной системы (p) в другую (q) – будем обозначать такое преобразование Zp Zq.

Теоретически возможно произвести его при любых q и p.

Однако подобный прямой перевод будет затруднен тем, что придется выполнять операции по правилам арифметики недесятичных систем счисления.

По этой причине более удобными с практической точки зрения оказываются варианты преобразования с промежуточным переводом Zp Zr Zq с основанием r, для которого арифметические операции выполнить легко.

Такими удобными основаниями являются r = 1 и r = 10, т.е. перевод осуществляется через унарную или десятичную систему счисления.

8.3. Преобразование Zp Z1 Zq

Идея алгоритма перевода предельно проста:

1. положим начальное значение Zq := 0;

2. из числа Zp вычтем 1 по правилам вычитания системы p, т.е. Zp := Zp–1 и добавим ее к Zq по правилам сложения системы q, т.е. Zq := Zq + 1;

3. будем повторять эту последовательность действий, пока не достигнем Zp = 0.

Правила сложения с 1 и вычитания 1 могут быть записаны следующим образом:

Промежуточный переход к унарной системе счисления в данном случае осуществляется неявно – используется упоминавшееся выше свойство независимости значения числа от формы его представления. Рассмотренный алгоритм перевода может быть легко реализован программным путем.

 

Пример 1. Выполнить преобразование 223 Z6. Последовательность действий и промежуточные результаты для наглядности представим в виде таблицы:

Шаг
Z3 - 1
Z6 + 1

 

Следовательно, 223 = 126.

 

8.4. Преобразование Zp Z10 Zq

Очевидно, первая и вторая часть преобразования не связаны друг с другом, что дает основание рассматривать их по отдельности.

Алгоритмы перевода Z10 Zq

Многочлен (1) для Zq может быть представлен таким образом:

(2)

где m – число разрядов в записи Zq, а bj (j = 0...m–1) – цифры числа Zq.

Разделим число Zq на две части по разряду номер i;

Число, включающее m–i разрядов с m–1-го по i-й обозначим i,

а число с i разрядами с i–1-го по 0-ой – i.

 
 

Очевидно, i [0,m–1], 0 = m-1 = Zq.

Позаимствуем из языка PASCAL обозначение двух операций:

· div – результат целочисленного деления двух целых чисел

· mod – остаток от целочисленного деления.

Например:

13 div 4=3;

13 mod 4 = 1.

Теперь если принять m-1 = bm-1, то в (2) усматривается следующее рекуррентное соотношение:

i = i+1 · q + bi,

из которого, в свою очередь, получаются выражения:

(3)

Аналогично, если принять 0 = b0, то для правой части числа будет справедливо другое рекуррентное соотношение:

i = i-1 + bi ·qi,

из которого следуют:

(4)

Из соотношений (3) и (4) непосредственно вытекают два способа перевода целых чисел из 10-й системы счисления в систему с произвольным основанием q.

Способ 1 является следствием соотношений (3), из которых просматривается следующий алгоритм перевода.

1. Целочисленно разделить исходное число (Z10) на основание новой системы счисления (q) и найти остаток от деления – это будет цифра 0-го разряда числа Zq.

2. Частное от деления снова целочисленно разделить на q с выделением остатка; процедуру продолжать до тех пор, пока частное от деления не окажется меньше q.

3. Образовавшиеся остатки от деления, поставленные в порядке, обратном порядку их получения, и представляют Zq.

Обычно процесс первода представляют в виде "лестницы".

Пример 2. Выполнить преобразование 12310 Z5.

Остатки от деления (3,4) и результат последнего целочисленного деления (4) образуют обратный порядок цифр нового числа. Следовательно, 12310 = 4435.

Полученное число нельзя читать "четыреста сорок три", поскольку десятки, сотни, тысячи и прочие подобные обозначения чисел относятся только к десятичной системе счисления.

Читать число следует простым перечислением его цифр с указанием системы счисления ("число четыре, четыре, три в пятеричной системе счисления").

Способ 2 вытекает из соотношения (4); действия производятся в соответствии со следующим алгоритмом:

1. Определить m–1 – максимальный показатель степени в представления числа по форме (1) для основания q.

2. Целочисленно разделить исходное число (Z10) на основание новой системы счисления в степени m – 1 (т.е. qm-1) и найти остаток от деления. Результат деления определит первую цифру числа Zq;

3. Остаток от деления целочисленно разделить на qm-2, результат деления принять за вторую цифру нового числа; найти остаток;

4. Продолжать эту последовательность действий, пока показатель степени q не достигнет значения 0.

Продемонстрируем действие алгоритма на том же примере, что был рассмотрен выше. Определить m–1 можно либо путем подбора

(50=1<123; 51=5<123; 52=25<123; 53=125>123, следовательно, m–1=2),

либо логарифмированием с оставлением целой части логарифма (log5123=2,99, т.е. m–1=2).

Далее:

b2 = 123 div 52 = 4; 1 = 123 mod 52 = 23;

(i = 2 - 1 = 1);

b1 = 23 div 51 = 4; 0 = 23 mod 51 = 3;

i = 0.

8.5. Алгоритмы перевода Zp Z10

Необходимо Zp представить в форме многочлена и выполнить все операции по правилам десятичной арифметики.

Пример 3. Выполнить преобразование 4435 Z10

4435 = 4·52+4·51+3·50 = 4·25+4·5+3·1 = 12310.

Ситуация, однако, значительно упрощается, если основания исходной и конечной систем счисления оказываются связанными соотношением p = qr, где r – целое число (естественно, большее 1) или r = 1/n ( n>1, целое) – эти случаи будут рассмотрены ниже.

8.6. Перевод чисел между системами счисления 2 – 8 – 16

Двоичная система счисления используется для представления чисел в компьютере.

Однако двоичная запись оказывается громоздкой, поскольку содержит много цифр, и, кроме того, она плохо воспринимается и запоминается человеком из-за зрительной однородности (все число состоит из нулей и единиц).

Поэтому в нумерации ячеек памяти компьютера, записи кодов команд, нумерации регистров и устройств и пр. используются системы счисления с основаниями 8 и 16;

Выбор именно этих систем счисления обусловлен тем, что переход от них к двоичной системе и обратно осуществляется простым образом.

Двоичная система счисления имеет основанием 2 и, соответственно, 2 цифры: 0 и 1.

Восьмеричная система счисления имеет основание 8 и цифры 0, 1, ..., 7.

Шестнадцатеричная система счисления имеет основание 16 и цифры

0, 1, ..., 9, A, B, C, D, E, F.

При этом знак A является 16-ричной цифрой, соответствующей числу 10 в десятичной системе; B16 = 1110; C16 = 1210; D16 = 1310; E16 = 1410; F16 = 1510.

В данном случае A ... F - это не буквы латинского алфавита, а цифры 16-ричной системы счисления и поэтому они имеют только такое начертание (не могут быть представлены в виде, например, соответствующих строчных букв, как в текстах).

Пользуясь алгоритмами, сформулированными в предыдущих разделах, можно заполнить таблицу:

Таблица 1. Представление чисел в системах счисления 2 – 8 – 16
Основание системы счисления
A
B
C
D
E
F

 

Докааны две теоремы.

Теорема 1.

Для преобразования целого числа Zp Zq в том случае, если системы счисления связаны соотношением q = pr, где r - целое число большее 1, достаточно Zp разбить справа налево на группы по r цифр и каждую из них независимо перевести в систему q.

Пример 6. Выполнить преобразование Z2 = 1100012 Z8.

Исходное число разбивается на группы по три разряда справа налево (8 = 23, следовательно, r = 3) и каждая тройка в соответствии с таблицей 1 переводится в 8-ричную систему счисления независимо от остальных троек:

Следовательно, 1100012 = 618 .

Аналогично, разбивая Z2 на группы по 4 двоичные цифры и дополняя старшую группу незначащими нулями слева, получим 1100012= 3116.

Теорема 2.

Для преобразования целого числа Zp Zq в том случае, если системы счисления связаны соотношением p = qr, где r - целое число большее 1, достаточно каждую цифру Zp заменить соответствующим r-разрядным числом в системе счисления q, дополняя его при необходимости незначащими нулями слева до группы в r цифр.

Пример 7. Выполнить преобразование D316 Z2.

Переходы Z8 Z16 и Z16 Z8, очевидно, удобнее осуществлять через промежуточный переход к двоичной системе. Например, 1238 = 0010100112 = 5316.

 








Дата добавления: 2015-07-22; просмотров: 1767;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.019 сек.