Шаг 19.
Теоретическая информатика. Кодирование информации в теории Шеннона.
Перевод чисел между системами счисления 2 – 8 – 16

    На этом шаге мы рассмотрим перевод чисел между системами счисления 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. Представление числе в разных системах счисления
Десятичная Двоичная Восьмеричная Шестнадцатеричная
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

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

Теорема 1.
Для преобразования целого числа ZpZq в том случае, если системы счисления связаны соотношением q = pr, где r - целое число большее 1, достаточно Zp разбить справа налево на группы по r цифр и каждую из них независимо перевести в систему q.
Доказательство.
Пусть максимальный показатель степени в записи числа p по форме (1) равен k-1, причем, 2r>k-1>r.

Zp = (ak-1…a1a0)p = ak-1·pk-1 + ak-2·pk-2 + ……+ aj·pj +…+ a1·p1 + a0·p0

    Вынесем множитель pr из всех слагаемых, у которых jr. Получим:

Zp = (ak-1·pk-1-r + ak-2·pk-2-r +… + ar·p0)·pr + (ar-1·pr-1 +… + a0·p0)·p0 = b1·q1 + b0·q0, где

b1 = ak-1·pk-1-r + … + ar·p0 = (ak-1…ar )p

b0 = ar-1·pr-1 +… + a0·p0 = (ar-1…a0)p

    Таким образом, r-разрядные числа системы с основанием p оказываются записанными как цифры системы с основанием q. Этот результат можно обобщить на ситуацию произвольного k-1>r - в этом случае выделится не две, а больше (m) цифр числа с основанием q. Очевидно, Zq = (bm … b0 )q.


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

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

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

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

Zp = (a1a0)p = a1·p1 + a0·p0.

    Для каждой цифры справедливо: 0ai p-1 и поскольку p = qr, 0ai qr -1, то в представлении этих цифр в системе счисления q максимальная степень многочленов (1) будет не более r - 1 и эти многочлены будут содержать по r цифр:

a1 = br-1(1)·qr-1+br-2(1)·qr-2+…+0(1)·q0

a0 = br-1(0)·qr-1+br-2(0)·qr-2+…+0(0)·q0

    Тогда:

Zp = (a1a0)p = (br-1(1)·qr-1+…+b0(1)·q0)·qr+(br-1(0)·qr-1+…+b0(0)·q0)·q0 =
= br-1(1)·q2r-1+…+b0(1 )·qr+br-1(0)·qr-1+…+b0(0)·q0 = (br-1(1)…b0(0))q = Zq

причем, число Zq содержит 2r цифр. Доказательство легко обобщается на случай произвольного количества цифр в числе Zp.


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

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

    На следующем шаге мы рассмотрим преобразование нормализованных чисел.




Предыдущий шаг Содержание Следующий шаг