- •1. Кодирование чисел
- •1.1. Двоичная система счисления
- •Преобразование целых чисел
- •Преобразование дробных чисел
- •1.2. Шеснадцатеричная система счисления
- •Преобразование целых чисел
- •Преобразование дробных чисел
- •Преобразование двоичных чисел
- •1.3. Восьмеричная система счисления
- •Преобразование целых чисел
- •Преобразование дробных чисел
- •Преобразование двоичных чисел
- •2. Кодирование текста
1.2. Шеснадцатеричная система счисления
Шеснадцатеричная система основана на том, что в числа кодируются 16-ю цифрами. В качестве таковых выступают цифры 0…9 и буквы латинского алфавита: «A», «B», «C», «D», «E» и «F». Значения символов приведены в табл. 1.2.
Таблица 1.2
Значения символов шестнадцатеричной системы
Символ |
Значение |
Символ |
Значение |
0 |
0 |
8 |
8 |
1 |
1 |
9 |
9 |
2 |
2 |
A |
10 |
3 |
3 |
B |
11 |
4 |
4 |
C |
12 |
5 |
5 |
D |
13 |
6 |
6 |
E |
14 |
7 |
7 |
F |
15 |
Принцип пересчета остается прежним, как и в двоичной системе, но основание счета будет равным «16» с соответствующим изменением всех формул.
Преобразование целых чисел
Целые числа переводятся последовательным целочисленным делением на основание счета, на «16», с вычислением остатков. Делению подвергаем число до тех пор, пока оно не станет меньше «16», все остатки также не должны превышать «15». Продемонстрируем перевод числа 70210 в шестнадцатеричную форму (см. рис. 1.3).
702 |
|
16 |
|
|
688 |
|
43 |
|
16 |
14 |
|
32 |
|
2 |
|
|
11 |
|
|
Рис. 1.3. Пример перевода числа из 10-й формы в 16-ую
Как мы видим, получились значения «2», «11» и «14». Значения, которые меньше 10 оставляем без изменения, а остальные преобразовываем в буквы (см. рис. 1.3). Таким образом, сохраняя прежнюю очередность, имеем: 70210 → 2BE16 .
Обратный пересчет осуществляется также исходя из развернутой формы числа. Пронумеруем разряды числа:
2 |
1 |
0 |
2 |
B |
E |
Произведем сложение разрядов умноженных на основание счета в степенях их порядковых номеров, не забывая заменять буквы соответствующими значениями (см. табл. 1.2):
2 · 162 + 11 · 161 + 14 · 160 = 512 + 176 + 14 = 70210
Исходное число восстановилось без погрешности, как и в случае с двоичной системой.
Преобразование дробных чисел
Дробные части числа преобразуются в шестнадцатеричную систему умножением на основание счета, в данном случае на «16», до ее исчезновения. Для примера переведем число 0,6810 в эту систему счисления (см. рис. 1.4)
× |
0,68 |
16 |
|
× |
10,88 |
16 |
|
× |
14,08 |
16 |
|
× |
1,28 |
16 |
|
|
4,48 |
и. т.д. |
Рис. 1.4. Перевод дробного числа
из десятичной системы в шестнадцатеричную
Как и в случае с двоичной системой, умножению на каждом этапе подвергаем только дробные части. Полученные целые части записываем в качестве разрядов нашего числа, заменяя те разряды, которые оказались больше «9» на эквивалентную букву в соответствии с табл. 1.2. Аналогично двоичной системе, перевод дробного числа возможен с появлением иррациональных чисел. Такие числа округляем на заданном разряде. В итоге, получаем следующий результат: 0,6810 = 0,AE14…16 .
Обратный расчет также протекает через развернутую часть числа, помня, что буквы это цифры, и их необходимо, при расчете, перевести в соответствующее им число (см. табл. 1.2):
0 |
-1 |
-2 |
-3 |
-4 |
0, |
A |
E |
1 |
4 |
Из примера видно, что дробные числа преобразовываются с погрешностью, как и в предыдущей системе счисления.
Если число содержит целую и дробную части одновременно, то обрабатываем его по отдельности (см. раздел «Двоичная система»): целая часть переводится делением, а дробная – умножением, а затем обе части соединяются.
Так, число 702,6810 преобразуется следующим образом:
целая часть: 70210 = 2BE16
дробная часть: 0,3610 = 0,AE14…16
В итоге получаем: 702,6810 = 2BE,AE14…16