Статья3. Шестнадцатеричная система исчисления.
Для удобства программирования в абсолютных кодах применяется Шестнадцатеричная система исчисления. Обозначение – 16СС или HEX или H.
В байте каждый полубайт изображается цифрой 16СС.
Рассмотрим подробнее обозначение цифр в 16СС.
1. Десятичная цифра 0 - 0 в 16СС
2. Десятичная цифра 1 - 1 в 16СС
3. Десятичная цифра 2 - 2 в 16СС
4. Десятичная цифра 3 - 3 в 16СС
5. Десятичная цифра 4 - 4 в 16СС
6. Десятичная цифра 5 - 5 в 16СС
7. Десятичная цифра 6 - 6 в 16СС
8. Десятичная цифра 7 - 7 в 16СС
9. Десятичная цифра 8 - 8 в 16СС
10. Десятичная цифра 9 - 9 в 16СС
11. Десятичная цифра 10 - A в 16СС
12. Десятичная цифра 11- B в 16СС
13. Десятичная цифра 12- C в 16СС
14. Десятичная цифра 13- D в 16СС
15. Десятичная цифра 14- E в 16СС
16. Десятичная цифра 15- F в 16СС
Таким образом в 16СС десятичные цифры от 0 до 15 изображаются следующими цифрами: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Каждой цифре 16СС соответствуют следующие цифры в 2двоичной СС:
1. 0 это 0000
2. 1 это 0001
3. 2 это 0010
4. 3 это 0011
5. 4 это 0100
6. 5 это 0101
7. 6 это 0110
8. 7 это 0111
9. 8 это 1000
10. 9 это 1001
11. А это 1010
12. В это 1011
13. С это 1100
14. D это 1101
15. E это 1110
16. F это 1111
---------------------------------------------------------------------------------------
Следующие байты, с которыми мы уже встречались, будут записаны в 16СС так:
Этот байт будет записан в 16СС как 99 или Hex99 или H99
-------------------------------------------------------------------------------------
Эти два байта или Полуслово будет записан в 16СС как BC99 или HexBC99 или HBC99
--------------------------------------------------------------------------------------
Этот байт соответствует следующей цифре в десятичной СИ ( мы уже считали выше):
Пересчитаем этот же байт из 16СС в десятичную:
Получили то же самое число 153
----------------------------------------------------------------------------------
Пересчитаем Полуслово HexBC99 из 16СС в десятичную:
-----------------------------------------------------------------------------------
Общее правило перевода чисел из 16СС в десятичную следующее:
Нумерация цифр в 16СС начинается с 0 справа налево:
Здесь изображено произвольное число в 16СС – Hex52FA70BC99
Верхняя строка в таблице – нумерация разрядов числа (синим)
Средняя строка в таблице – вес разряда (красным)
Нижняя строка – само число поразрядно.
Переведём число Hex52FA70BC99 в десятичную СС:
=5*68719476736 + 2*4294967296 + 15*268435456 + 10*16777216 + 7*1048576 + 0*65536 + 11*4096 + 12*256 + 9*16 +9 = …(не будем дальше считать)
---------------------------------------------------------------------------------------
Для интереса сделаем перевод знакомого нам десятичного 48281 числа в 16СС.
1. 48281 делим на 16 и фиксируем остаток от деления меньше 16 :
48281 : 16 = 3017, остаток1 = 9 или Hex9
2. 3017 делим на 16 и фиксируем остаток от деления меньше 16 :
3017 :16 = 188, остаток2 = 9 или Hex9
3. 188 делим на 16 и фиксируем остаток от деления меньше 16 :
188 : 16 = 11, остаток3 = 12 или HexC
4. Так как в последнем делении остаток4 = 11 или HexB меньше 16, на этом заканчиваем деление на 16.
5. Записываем остатки с 1 по 4 в порядке справа налево в 16СС :
48281 = HexBC99
---------------------------------------------------------------------------------------
Для интереса сделаем перевод знакомого нам десятичного 48281 числа в 16СС с помощью калькулятора.
1. 48281 : 16 = 3017,5625
Очевидно, что 0,5625 это количество целых 1/16 частей в остатке от деления. Узнаем, сколько таких целых частей:
0,5625 : (1/16) = 0,5625 * 16 = 9. Остаток1 = 9 или Hex9.
2. 3017 : 16 = 188, 5625
0,5625 * 16 = 9. Остаток2 = 9 или Hex9.
3. 188 : 16 = 11,75
0,75 * 16 = 12. Остаток3 = 12 или HexC.
4. Остаток4 = 11 или HexB. Деление прекращаем, т.к. целое частное <16.
5. Записываем остатки с 1 по 4 в порядке справа налево в 16СС :
48281 = HexBC99
--------------------------------------------------------------------------------
Замечание.
В программировании в абсолютных кодах самые распространенные форматы в 16СС это:
1. Полубайт - 1 Hex число
2. Байт -2 Hex числа
3. Полуслово(2байта) -4 Hex числа
4. Слово(4 байта) -8 Hex чисел
5. Двойное слово(8 байт) -16 Hex чисел
-------------------------------------------------------------------------------------
Приведём пример использования 16СС в абсолютных кодах команд на примере ЭВМ ЕС-1035, см. фото:
Команда «Начать Ввод-ввод» выглядела так:
9B 00 00 0F
Где 9B – код команды «Начать Ввод-ввод»
Последний байт 0F – адрес устройства Ввода – вывода, в данном случае это печать – АЦПУ (алфавитно-цифровое печатающее устройство)
Третья цифра 0 справа – это номер Канала Ввода-вывода, в данном случае
Это Мультиплексный канал (для медленных устройств)
---------------------------------------------------------------------------------------
Еще прмер.
Идентификатор вот этого моего канала здесь в Яндексе такой:
62cd3cfc63f88417d7e74b79
Если вы скопируете этот идентификатор и поместите его в Поиск Яндекса, то найдёте этот канал.
Здесь 12 шестнадцатеричных цифр.
Рассмотрим их подробнее и переведём каждый байт в двоичную и десятичную системы исчисления:
Прикинем, сколько чисел можно изобразить с помощью 12 шестнадцатеричных чисел. Сосчитаем на калькуляторе в телефоне.
12 шестнадцатеричных чисел содержат 8*12=96 двоичных бит.
Сосчитаем, сколько чисел можно изобразить с помощью 96 двоичных бит:
Теперть вспомним, что на земле сейчас живёт чуть менее 8 миллиардов человек: 7 969 111 502.
Получается, что с помощью 12 шестнадцатеричных чисел можно создать каждому живущему ныне человеку на Земле по (10 в степени 19) каналов!
Сотрудники Вычислительного Центра Главсредволговодстроя, г. Саратов, 1977-1993.
------------------------
Если Вам понравился материал статьи, подпишитесь пожалуйста на мой канал в целом.
Для этого пройдите по ссылке ниже и нажмите кнопку "Подписаться"
https://dzen.ru/profile/editor/id/62cd3cfc63f88417d7e74b79