Найти в Дзене

1️⃣6️⃣ Шестнадцатеричная система счисления

Оглавление

Шестнадцатеричная система счисления является очень полезной в низкоуровневом программировании. Её также используют в качестве компьютерной документации. Поскольку минимальной адресуемой единицей памяти является 8-битный байт, то очень удобно записывать за счёт двух шестнадцатеричных цифр.

Ранее это делалось восьмеричной системой счисления, но количество разрядов было больше.

В палитре цветов RGB (Red-Green-Blue), которую используют при разработке интерфейса приложений, также используются шестнадцатеричные значения. В стандарте символов UNICODE то же используется данная система счисления.

Как мы выяснили, данная система очень полезна при разработке цифрового продукта и программировании. В данной системе, как видно из названия, есть шестнадцать цифр от 0 до FПоскольку цифр здесь больше десяти, то решили использовать буквы, чтобы избежать путаницы в числах. Посмотрим на таблицу соответствия.

Таблица соответствия шестнадцатеричных чисел к двоичному представлению.
Таблица соответствия шестнадцатеричных чисел к двоичному представлению.

Перевод в двоичную систему счисления

Благодаря, таблице можно легко и быстро перевести из шестнадцатеричной системы счисления в двоичную. Для наглядности переведём число. В качестве примера возьмём - 4BC.

Разложим каждую цифру по порядку на двоичное представление:

[4 = 0100 | B = 1011 | C = 1100].

Результат перевода:

Результат перевода
Результат перевода

Перевод в шестнадцатеричную систему счисления

С помощью таблицы также можно перевести и из двоичной системы счисления в шестнадцатеричную. Допустим, есть число 1010110111 в двоичном представлении. Дальше нужно разбить данное число по группам. В каждой группе должно быть четыре цифры. Но группировать необходимо обязательно с конца (с правой части).

Группируем число:

Группируем число
Группируем число

После найдём в таблице соответствие двоичных чисел к шестнадцатеричной системе счисления. Числа 10 в таблице нет. Но мы можем написать сколько угодно незначащих нулей перед числом и это никак не повлияет на его значение. Допишем два нуля перед 10.

Добавляем незначащие нули
Добавляем незначащие нули

Дополним наше решение данными из таблицы и получим финальный результат:

Дополним данными из таблицы
Дополним данными из таблицы

Результат перевода:

Результат перевода
Результат перевода

Не табличный перевод

Бывают ситуации, когда таблица не всегда оказывается под рукой, да и не память её выучить не успели или не захотели. В такой ситуации очень полезно знать алгоритм перевода.

Алгоритм основан на двух важных моментах:

  • максимальное число;
  • степени числа два

В шестнадцатеричной системе счисления максимальной цифрой является 15, то есть F. Можно ли из суммы степеней числа два получить число пятнадцать? Можно, для этого потребуется всего четыре степени числа два: единица, двойка, четвёрка и восьмёрка.

Проверим:

Сумма степеней двойки
Сумма степеней двойки

За счёт сочетания этих степеней можно получить любое число в диапазоне от 0 до 15 (F). Следовательно, эти цифры помогут нам перевести число из двоичной системы счисления в шестнадцатеричную и обратно.

Разберём более детально на примере. Нужно перевести число 3BC из шестнадцатеричной системы счисления в двоичную. Для наглядности сделаем таблицу, в которой каждую цифру запишем отдельно.

Расписали цифры по ячейкам
Расписали цифры по ячейкам

Для большей наглядности рядом с буквенными значениями запишем числовой эквивалент. Также добавим под каждой цифрой по четыре ячейки.

Добавляем по четыре ячейки под цифру
Добавляем по четыре ячейки под цифру

Теперь расставим наши степени числа два начиная с конца (справа). В каждой группе должны быть все эти степени (1, 2, 4, 8). Расставим цифры и ниже сделаем ещё ячейки для записи ответа.

Добавляем еще одну строку для записи ответа
Добавляем еще одну строку для записи ответа

Теперь начинаем рассуждать. Из степеней двойки (8, 4, 2, 1) необходимо получить цифры сверху. Делается это с конца и начинается проверка с самого большой цифры. Если данная цифра подходит и её берём, то под ней ставим единицу. Если цифра не помещается и её не берём, то под ней ставим ноль.

Для начала разберём цифру C (12):

  • Цифра 8 помещается в двенадцать? - Да, берём
  • А цифра 4 помещается вместе с восьмёркой? - Да, берём
  • Цифру 2 уже не берём, так как получили уже нужную сумму - не берём
  • Цифру 1 тоже не берём, так как получили уже нужную сумму - не берём

Теперь цифра B (11):

  • Цифра 8 помещается в одиннадцать? - Да, берём
  • А цифра 4 помещается вместе с восьмёркой? - Нет, не берём
  • Цифра 2 помещается вместе с восьмёркой? - Да, берём
  • А цифра 1 помещается вместе с восьмёркой и двойкой? - Да, берём

И осталась цифра 3:

  • Цифра 8 помещается в три? - Нет, не берём
  • Цифра 4 помещается в три? - Нет, не берём
  • Цифра 2 помещается в три? - Да, берём
  • А цифра 1 помещается вместе с двойкой? - Да, берём

Если визуально посмотреть на таблицу с нашим решением, то она будет иметь следующий вид:

Финальное табличное решение
Финальное табличное решение

Результат перевода:

Результат перевода
Результат перевода

Аналогичным образом можно совершить и обратный перевод (из двоичной системы счисления в шестнадцатеричную).

Понравилась статья? Хочешь разбираться в информатике, программировании и уметь работать в разных программах? Тогда ставь лайк, подпишись на канал и поделись статьей с друзьями!

#информатика #системы счисления #шестнаднатеричная система #перевод #образование #школьная информатика