Инструменты
RU

Что такое шестнадцатеричная система счисления?

Шестнадцатеричная система счисления (hex) — это позиционная система с основанием 16. Числа в ней записываются 16 символами — 0–9 и A–F, — и это стандартный способ компактно записывать двоичные данные в вычислительной технике: от цветов на сайтах до адресов памяти.

Шестнадцатеричная система в одном предложении

Шестнадцатеричная система — это позиционная система счисления с основанием 16: каждая цифра весит в 16 раз больше, чем цифра справа от неё, а значения от 10 до 15 записываются буквами от A до F. Чтобы показать, что число шестнадцатеричное, программисты пишут 0x1A (C, Java, JavaScript, Python), #1A2B3C для цветов в CSS, 1Ah в ассемблере или 1A₁₆ в математике.

Таблица шестнадцатеричных цифр от 0 до 15

ДесятичноеHexДвоичноеДесятичноеHexДвоичное
000000881000
110001991001
22001010A1010
33001111B1011
44010012C1100
55010113D1101
66011014E1110
77011115F1111

Как считать в шестнадцатеричной системе

В hex считают так же, как в десятичной системе, только перенос в следующий разряд происходит после F, а не после 9: … 8, 9, A, B, C, D, E, F, 10, 11 … 19, 1A … 1F, 20 … FF, 100. Здесь 10 означает шестнадцать, а 100 — 16 × 16 = 256. Две hex-цифры охватывают один байт (00–FF = 0–255), четыре цифры — до FFFF = 65 535, восемь — до FFFFFFFF = 4 294 967 295.

Зачем компьютерам шестнадцатеричная система

Компьютеры хранят всё в двоичном виде, но длинные цепочки нулей и единиц людям трудно читать и легко ввести с ошибкой. Поскольку 16 = 2⁴, одна hex-цифра соответствует ровно четырём битам (тетраде), а две hex-цифры — одному байту. Перевод между hex и двоичной системой сводится к простой замене цифр по таблице, а запись в hex вчетверо короче: 1101 1110 1010 1101 — это просто DEAD. У десятичной системы такой удобной связи с двоичной нет, поэтому для «сырых» данных её используют редко.

Перевод из шестнадцатеричной системы в десятичную и обратно

Наши конвертеры делают всё это мгновенно и показывают каждый шаг.

Где применяется шестнадцатеричная система

Сравнение шестнадцатеричной, десятичной, восьмеричной и двоичной систем

СистемаОснованиеЦифрыЗапись числа 255Типичное применение
Двоичная20–111111111Аппаратура, битовые флаги
Восьмеричная80–7377Права доступа к файлам в Unix (chmod 755)
Десятичная100–9255Числа в повседневной жизни
Шестнадцатеричная160–9, A–FFFБайты, цвета, адреса, хеши

Отрицательные числа в hex

В самой шестнадцатеричной системе нет особого знака, поэтому отрицательные числа обычно хранят в дополнительном коде: старший бит значения фиксированного размера показывает, что оно отрицательное. Как байт со знаком 7F — это 127, 80 — −128, а FF — −1; как 32-битное целое FFFFFFFF — это −1. В математике и в нашем калькуляторе можно и просто поставить минус: −1A = −26.

Часто задаваемые вопросы

Почему в шестнадцатеричной системе есть буквы?

Для основания 16 нужно шестнадцать односимвольных цифр, а арабских цифр всего десять. Буквы A–F обозначают значения 10–15. Заглавные и строчные буквы равнозначны: ff = FF = 255.

Что означает 0x перед числом?

Этот префикс обозначает шестнадцатеричное число в C, C++, Java, JavaScript, Python и многих других языках: 0x10 — это 16, а не десять. В CSS для цветов вместо него используется #, а в ассемблере часто добавляют суффикс h (10h).

Hex и Base64 — это одно и то же?

Нет. Hex записывает каждый байт двумя символами из 0–9 и A–F, поэтому объём данных удваивается, зато их легко читать побайтно. Base64 использует 64 символа и упаковывает 3 байта в 4 символа — это компактнее (около 33 % накладных расходов), но побайтно такие данные не прочитать.

Обновлено: