Шестнадцатеричная система: короткая запись двоичных чисел

Зачем программистам шестнадцатеричная система, как переводить числа между двоичной, шестнадцатеричной и десятичной записью и где встречаются коды вроде #FF8800.

Содержание

Шестнадцатеричная система счисления записывает числа шестнадцатью цифрами: от 0 до 9 и буквами от A до F. Одна такая цифра заменяет ровно четыре двоичных. Поэтому её используют как короткую запись для длинных цепочек битов: компьютер по-прежнему хранит нули и единицы, а человек видит запись вчетверо короче.

Зачем нужна ещё одна система

Попробуйте продиктовать другу по телефону число 1111101011001110. Скорее всего, один из Вас собьётся уже на середине. Двоичная запись удобна машине, но не человеку: она длинная и однообразная.

Десятичная запись того же числа — 64 206 — короче, но по ней не видно, какие биты равны единице. А программисту часто важны именно биты.

Шестнадцатеричная запись решает обе задачи. То же число выглядит как FACE: четыре знака вместо шестнадцати, и каждый знак точно соответствует своей четвёрке битов.

Шестнадцать цифр

Чтобы считать шестнадцатью цифрами, обычных десяти не хватает. Недостающие шесть взяли из латинского алфавита.

ДесятичноеДвоичноеШестнадцатеричное
000000
100011
200102
300113
401004
501015
601106
701117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F

Буквы здесь — не буквы, а цифры: A означает десять, F — пятнадцать. После F цифры заканчиваются, поэтому следующее число записывается как 10 — «один-ноль», то есть шестнадцать.

Чтобы отличать системы, пишут основание внизу — 2F₁₆ — или ставят перед числом 0x: 0x2F. Второй способ принят в языках программирования. Большие и маленькие буквы равноправны: ff и FF — одно число.

Из двоичной записи в шестнадцатеричную и обратно

Здесь не нужно ничего вычислять — достаточно таблицы выше.

Из двоичной в шестнадцатеричную. Разбейте запись на четвёрки справа налево и замените каждую четвёрку одной цифрой.

TXT
1011 0110
  B    6        10110110₂ = B6₁₆

Если слева осталось меньше четырёх цифр, допишите нули: 110101₂ — это 0011 0101, то есть 35₁₆.

Из шестнадцатеричной в двоичную. Замените каждую цифру её четвёркой битов.

TXT
  3    F
0011 1111       3F₁₆ = 00111111₂
Байт 10110110 разбит на две четвёрки: 1011 превращается в B, 0110 — в 6
Рисунок 1 — Каждая четвёрка битов — одна шестнадцатеричная цифра

Восемь битов всегда записываются двумя шестнадцатеричными цифрами: от 00 до FF. Это очень удобно, потому что восемь битов — байт — основная единица памяти компьютера.

Из шестнадцатеричной записи в десятичную

Система позиционная, только веса разрядов растут в шестнадцать раз: 1, 16, 256, 4096. Умножаем каждую цифру на вес её разряда и складываем.

TXT
2F₁₆  = 2 · 16 + 15 · 1          = 47
1A3₁₆ = 1 · 256 + 10 · 16 + 3 · 1 = 419

Обратный перевод похож на двоичный: делим число на 16 и читаем остатки снизу вверх. Переведём 419.

TXT
419 : 16 = 26, остаток 3
 26 : 16 =  1, остаток 10 → A
  1 : 16 =  0, остаток 1

Снизу вверх: 1A3.

Где встречается шестнадцатеричная запись

Цвета. Цвет на экране складывается из трёх составляющих: красной, зелёной и синей. Яркость каждой — число от 0 до 255, то есть один байт. Три байта записывают шестью шестнадцатеричными цифрами после знака #.

КодКрасныйЗелёныйСинийЦвет
#FF000025500красный
#00FF0002550зелёный
#FFFFFF255255255белый
#000000000чёрный
#F8CA73248202115фирменный жёлтый цвет Marcus

Проверим последнюю строку: F8 = 15 · 16 + 8 = 248, CA = 12 · 16 + 10 = 202, 73 = 7 · 16 + 3 = 115.

Адреса устройств в сети. У каждой сетевой карты есть номер из шести байтов — MAC-адрес. Его пишут шестью парами цифр: 02:1A:7D:5B:E0:3C.

Коды символов. У каждого знака есть номер в общей таблице символов. Латинская A — это U+0041, а смайлик 😀 — U+1F600.

Сообщения об ошибках. Коды вроде 0x80070005 в окне с ошибкой — это обычные числа, записанные коротко.

Восьмеричная система

Тот же приём работает с тройками битов. Три бита дают восемь сочетаний, поэтому их можно заменить одной цифрой от 0 до 7. Получается восьмеричная система.

TXT
111 101 101
 7   5   5      111101101₂ = 755₈

Сегодня она встречается редко. Самый известный пример — права доступа к файлам в Linux: запись 755 означает три тройки битов, по одной для владельца, группы и всех остальных.

Частые ошибки

  • Читают 10₁₆ как десять. Это шестнадцать. Десять записывается цифрой A.
  • Разбивают на четвёрки слева направо. Начинать нужно справа, иначе неполная группа окажется не с той стороны.
  • Забывают нули при переводе в двоичную. Цифра 3 — это 0011, а не 11: каждая цифра всегда даёт ровно четыре бита.
  • Считают, что запись с буквами — это текст. FACE и BAD могут быть обычными числами.

Коротко

  • В шестнадцатеричной системе шестнадцать цифр: 0–9 и A–F, где A = 10, а F = 15.
  • Одна шестнадцатеричная цифра равна четырём битам, две цифры — одному байту.
  • Перевод между двоичной и шестнадцатеричной записью делается заменой четвёрок по таблице.
  • Веса разрядов — 1, 16, 256, 4096.
  • Шестнадцатеричную запись используют для цветов, адресов, кодов символов и ошибок.

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

Использованная литература

  1. Шестнадцатеричная система счисления — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Шестнадцатеричная_система_счисления (дата обращения: 09.10.2026).
  2. Цвета в CSS: шестнадцатеричная запись — MDN [Электронный ресурс]. — URL: https://developer.mozilla.org/ru/docs/Web/CSS/hex-color (дата обращения: 09.10.2026).