0.6. Системы счисления.
Система счисления — это система записи чисел.
Пусть b — натуральное число, большее единицы. Тогда любое целое неотрицательное число единственным образом представимо в виде:
a = an–1bn–1 + an–2 bn–2 + ... + a1b + a0,
где . (Это теорема, ее доказательство опустим.) Число a записывают так: a = an–1an–2...a0. Здесь b — основание системы счисления, n — разрядность числа, ai — цифры. Это представление называют позиционным, так как "вклад" каждой цифры определяется ее позицией в числе: последняя (младшая) цифра умножается на весовой коэффициент b0 = 1, а первая (старшая) цифра — на bn–1.
Обычно используют следующие системы счисления: b = 2 — двоичная (binary), b = 8 — восьмеричная (octal), b = 10 — десятичная (decimal), b = 16 — шестнадцатеричная (hexadecimal). Перевод чисел из одной системы счисления в другую основывается на записи многочлена по так называемой схеме Горнера:
a = (...((an–1b + an–2)b + an–3)b+... + a1)b + a0.
Ясно, что a0 — остаток от деления a на b, a1 — остаток от деления предыдущего частного на b и т.д. Наконец an–1 — последнее частное.
Пример. 2610 перевести в двоичную систему счисления. Выполняем последовательное деление 26 на 2, далее располагаем в обратном порядке последнее частное и остатки (рис. 0.2).
26 |
2 |
|
|
|
26 |
13 |
2 |
|
|
0 |
12 |
6 |
2 |
|
|
1 |
6 |
3 |
2 |
|
|
0 |
2 |
1 |
|
|
|
1 |
|
|
|
|
|
|
Рис. 0.2.
Получена двоичная запись исходного числа. Итак, 2610 = 110102.
Проверка: (((1*2+1)*2+0)*2+1)*2+0=26, или 1*24+1*23+0*22+1*21+0*20 = 26.
Упражнение. Перевести 5710 в двоичную систему счисления.
Упражнение. Перевести 10011012 в десятичную систему счисления.
0.7. Шестнадцатеричная система счисления
ЭВМ строится на базе элементов, которые могут находиться в двух устойчивых состояниях. Эти состояния кодируются нулем и единицей. Информация внутри ЭВМ представляется цепочками нулей и единиц, поэтому для чисел наиболее естественно использовать двоичную систему счисления. Но эта система неудобна для человека — сразу и не скажешь, например, различны ли числа 1110010010110111 и 1110011010110111 и какое из них больше. Хотелось бы иметь более компактную запись, причем такую, чтобы по ней можно было легко восстановить исходное двоичное представление. К счастью, системы счисления, основания которых являются степенями двойки (b = 2k), очень просто связаны с двоичной. Используют, как правило, b = 8 или b = 16. Для b = 16 представление удобнее (почему — разберем чуть позже).
a = an–116n–1 + an-216n–2 + ... + a116 + a0, 0 ai 15.
Каждую цифру ai представим в двоичной системе: ai = ci,323 + ci,222 + ci,121 +ci,0. Подставляя их в исходное 16-ричное представление, получаем двоичное представление числа. Итак, для перехода от одного основания к другому нужно иметь таблицу двоичного представления чисел (цифр) от 0 до 15.
Составим таблицу (табл. 0.3) двоичных представлений для чисел от 0 до 24 – 1 = 15. (Например, 6 = 1*22+1*21+0*20.) Арабских цифр для этого не хватает, поэтому условились цифрам выше 9 ставить в соответствие буквы латинского алфавита.
Таблица 0.3. Числа от 0 до 15 в двоичной и 16-ричной системах счисления
b = 16 |
b = 2 |
b = 16 |
b = 2 |
b = 16 |
b = 2 |
b = 16 |
b = 2 |
0 |
0000 |
4 |
0100 |
8 |
1000 |
C(12) |
1100 |
1 |
0001 |
5 |
0101 |
9 |
1001 |
D(13) |
1101 |
2 |
0010 |
6 |
0110 |
A(10) |
1010 |
E(14) |
1110 |
3 |
0011 |
7 |
0111 |
B(11) |
1011 |
F(15) |
1111 |
Эту таблицу необходимо выучить наизусть. Тяжелее всего выучивается старшая часть таблицы. Для некоторых цифр можно предложить мнемонические правила (рис. 0.3). Буква А ножками упирается в единицы, перекладина — над нулем. Буквы C и E положим набок, тогда каждой горизонтальной перекладине соответствует единица.
|
Рис. 0.3. |
Наконец, буква F (Finish) соответствует последней (финальной) цифре.
Теперь сформулируем правила перехода.
Переход 16 2. Заменить каждую цифру ее двоичным представлением. Например, 1A = 0001 1010 = 11010. (Ведущие нули можно опустить.)
Переход 2 16. Разбить число справа налево на тетрады (четверки цифр). Каждую тетраду заменить 16-ричной цифрой. Например,
10110111111100 |
= 10 1101 1111 1100 |
= 2DFC. |
|
|
|
Упражнение. Найти двоичные и десятичные эквиваленты следующих 16-ричных чисел: D5, 9A26, 7BF5.
Упражнение. Сформулируйте правила перехода для восьмеричной системы счисления. Приведите примеры.
В заключение процитируем Питера Нортона: "Шестнадцатеричная система - разумный компромисс между тем, что удобно машине, и тем, что удобно нам с вами" [Нортон].