На этом шаге мы рассмотрим перевод чисел между системами счисления 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-ричной системы счисления и поэтому они имеют только такое начертание (не могут быть представлены в виде, например, соответствующих строчных букв, как в текстах).
Пользуясь алгоритмами, сформулированными в предыдущих разделах, можно заполнить таблицу:
Десятичная | Двоичная | Восьмеричная | Шестнадцатеричная |
---|---|---|---|
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 |
Докажем две теоремы.
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.
Исходное число разбивается на группы по три разряда справа налево (8 = 23, следовательно, r = 3) и каждая тройка в соответствии с таблицей 1 переводится в 8-ричную систему счисления независимо от остальных троек:
Следовательно, 1100012 = 618 . Аналогично, разбивая Z2 на группы по 4 двоичные цифры и дополняя старшую группу незначащими нулями слева, получим 1100012= 3116.
Zp = (a1a0)p = a1·p1 + a0·p0.
Для каждой цифры справедливо: 0ai
p-1 и
поскольку p = qr, 0
ai
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.
Переходы Z8
Z16 и Z16
Z8,
очевидно, удобнее осуществлять через промежуточный переход к двоичной системе.
Например, 1238 = 0010100112 = 5316.
На следующем шаге мы рассмотрим преобразование нормализованных чисел.