Системы счисления определяют, из каких символов будет состоять число и по каким правилам их объединяют.
В десятичной системе используют десять цифр, в двоичной — две, в восьмеричной — восемь.
Шестнадцатеричная система счисления (HEX, hexadecimal) использует 16 символов. Это цифры от 0 до 9 и буквы A, B, C, D, E и F. При этом A–F выполняют роль цифр.
Получается такой ряд из 16 символов:
0123456789ABCDEF
A соответствует десятичному числу 10, а F — числу 15. Регистр обычно не меняет значение. Например, FF и ff обозначают одно число.
Напоминаем, что так как отсчет начинается с 0, символ F, значение которого равно 15, является шестнадцатым.
F — наибольшая цифра шестнадцатеричной системы и последнее значение, которое в HEX можно записать одним символом. Следующее число, которое соответствует числу 16 в десятичной системе (16₁₀), записывают уже двумя символами — 10₁₆. Такое число является двухразрядным.
Разряд — это позиция цифры в записи числа. Числа из одного символа называются одноразрядными, из двух — двухразрядными и т. д.
Как устроены числа в шестнадцатеричной системе
Шестнадцатеричная система является позиционной. Это значит, что значение каждого символа зависит не только от самого символа, но и от его местоположения в числе.
Сначала рассмотрим символы по алфавиту HEX, а после разберем принцип построения чисел.
Алфавит шестнадцатеричной системы
Алфавит системы счисления — это набор символов, с помощью которых записывают числа. Как помним, HEX состоит из набора символов 0123456789ABCDEF.
Представление алфавита HEX в десятичном и двоичном формате:
| Десятичное число | HEX | Двоичное представление |
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| 10 | A | 1010 |
| 11 | B | 1011 |
| 12 | C | 1100 |
| 13 | D | 1101 |
| 14 | E | 1110 |
| 15 | F | 1111 |
После F для записи следующего числа требуется уже два разряда. Поэтому далее идут 10₁₆, 11₁₆, 12₁₆ и так далее до FF₁₆. После FF₁₆ появляется третий разряд, и следующее число записывается как 100₁₆.
Как позиция символа влияет на его значение
В позиционной системе значение символа зависит от разряда (позиции), в котором он находится. Это важно при переводе числа из одной системы счисления в другую.
- В десятичной системе разряды соответствуют степеням числа 10, например:
347₁₀ = 3 × 10² + 4 × 10¹ + 7 × 10⁰
- В шестнадцатеричной системе используется тот же принцип, но разряды соответствуют степеням числа 16.
Самый правый символ обозначает количество единиц, а следующий слева показывает, сколько в числе групп по 16.
Пример:
1A₁₆ = 1 × 16¹ + 10 × 16⁰ = 26₁₀
Здесь 1 означает одну группу из 16, а A — еще 10 единиц (так как A означает 10, а 16⁰ = 1).
В числе A0₁₆ буква A стоит уже на позиции группы 16. Поэтому она означает десять групп по 16:
A0₁₆ = 10 × 16¹ + 0 × 16⁰ = 160₁₀
Главное правило — чем левее находится цифра, тем больше ее значение в числе:

Как записывают шестнадцатеричные числа
Чтобы отличить шестнадцатеричное число от десятичного, рядом с ним указывают основание системы счисления, либо добавляют специальный префикс или суффикс.
- В математической записи основание указывают нижним индексом:
2A₁₆
- Во многих языках программирования (Python, JavaScript, Java, C, C++, C# и Go) перед шестнадцатеричным числом обычно ставят префикс 0x, который показывает, что следующие символы нужно читать как число в системе с основанием 16.
То есть так программа поймет, что это не десятичное число, а шестнадцатеричное, и будет обрабатывать его по правилам HEX.
Например, 0x2A означает шестнадцатеричное число 2A.
- В некоторых вариантах ассемблера после числа добавляют суффикс h:
2Ah
- В веб-разработке перед шестнадцатеричной записью цвета используют знак #. Цвет записывают в формате #RRGGBB, где три пары цифр задают интенсивность красного, зеленого и синего.
Например:

В записи #2A2A2A все три компонента имеют одинаковое значение, поэтому получается оттенок серого.
- Номера символов Unicode также часто записывают в шестнадцатеричном формате. Перед кодом ставят обозначение U+:
U+0041 — код Unicode заглавной латинской буквы A.
Важно, что конкретная программа или система распознает только те обозначения (суффиксы и префиксы), которые предусмотрены синтаксисом ее языка.
HEX в информатике
Компьютер хранит и обрабатывает данные в двоичном виде (нули и единицы). Человеку сложно читать и сравнивать длинные двоичные последовательности, поэтому их записывают в более компактном шестнадцатеричном формате.
Одна цифра HEX соответствует четырем битам:
1111₂ = F₁₆
Две шестнадцатеричные цифры соответствуют восьми битам (или одному байту):
11111111₂ = FF₁₆ = 255₁₀
Длинную двоичную запись можно сократить. В HEX каждой группе из четырех битов соответствует одна цифра.
Например:
1010 1100 1111 0000₂ = ACF0₁₆
HEX используют:
- Для адресов памяти и низкоуровневых данных
В шестнадцатеричном формате записывают адреса, содержимое памяти, машинные инструкции и отдельные байты.
- В сетевых технологиях
Например, IPv6-адреса записывают группами шестнадцатеричных цифр, разделенными двоеточиями.
- Для хешей и идентификаторов
Результаты хеширования и некоторые идентификаторы часто отображают с помощью цифр 0–9 и букв A–F.
Перевод чисел из одной системы в другую
Как перевести шестнадцатеричное число в десятичное
Каждая позиция в HEX соответствует определенной степени числа 16. Мы уже знаем, что крайнему правому разряду соответствует 16⁰, следующему слева — 16¹, затем 16² и так далее.
Для перевода нужно:
- Заменить буквы A–F их числовыми значениями от 10 до 15.
- Определить степень числа 16 для каждого разряда, начиная с нуля справа.
- Умножить каждую цифру на соответствующую степень числа 16.
- Сложить полученные значения.
Пример:
Переведем число 2AF₁₆ в десятичную систему.
В нем:
- 2 находится в разряде 16².
- A, то есть 10, находится в разряде 16¹.
- F, то есть 15, находится в разряде 16⁰.
Переведем число:
2AF₁₆ = 2 × 16² + 10 × 16¹ + 15 × 16⁰ = 2 × 256 + 10 × 16 + 15 × 1 = 512 + 160 + 15 = 687₁₀
Получается, что шестнадцатеричное число 2AF₁₆ соответствует десятичному числу 687.
Как перевести десятичное число в шестнадцатеричное
Чтобы перевести десятичное число в HEX, его последовательно делят на 16 и записывают остатки.
Порядок такой:
- Разделить число на 16 и записать целую часть результата и остаток.
- Полученное частное снова разделить на 16.
- Продолжать деление, пока частное не станет равным нулю.
- Остатки от 10 до 15 заменить буквами A–F.
- Прочитать остатки снизу вверх.
Пример:
Переведем число 254₁₀ в шестнадцатеричную систему.
- 254 ÷ 16 = 15, остаток 14
- 15 ÷ 16 = 0, остаток 15
В HEX значение 14 обозначается буквой E, а 15 — буквой F.
Остатки читают снизу вверх:
15 заменяем на F,
14 заменяем на E.
Получается:
254₁₀ = FE₁₆
Проверим результат обратным переводом:
FE₁₆ = 15 × 16¹ + 14 × 16⁰ = 15 × 16 + 14 = 240 + 14 = 254₁₀
Значит, десятичному числу 254 соответствует шестнадцатеричное число FE₁₆.
Как перевести двоичное число в шестнадцатеричное
Чтобы перевести двоичное число в HEX, его разбивают справа налево на группы по четыре бита. Для каждой такой вычисляют значение в десятичной системе и заменяют его соответствующей цифрой HEX.
Пример:
Разделим число 1011011110₂ на группы по четыре бита, начиная справа:
10 1101 1110
В крайней левой группе не хватает двух битов, поэтому добавим слева нули:
0010 1101 1110
Теперь вычислим значение каждой группы. В группе из четырех битов позиции справа налево соответствуют числам 1, 2, 4 и 8.
Первая группа:
0010₂ = 0 × 8 + 0 × 4 + 1 × 2 + 0 × 1 = 2
Вторая группа:
1101₂ = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 13
В HEX число 13 обозначается цифрой D.
Третья группа:
1110₂ = 1 × 8 + 1 × 4 + 1 × 2 + 0 × 1 = 14
В HEX число 14 обозначается цифрой E.
Соединяем полученные цифры и получаем:
1011011110₂ = 2DE₁₆
Как перевести шестнадцатеричное число в двоичное
Чтобы перевести число из HEX в двоичную систему, каждую шестнадцатеричную цифру заменяют соответствующей группой из четырех битов.
Пример:
Возьмем число 3A₁₆.
Цифра 3 соответствует десятичному числу 3. Представим его как сумму значений двоичных разрядов 8, 4, 2 и 1:
3 = 0 × 8 + 0 × 4 + 1 × 2 + 1 × 1
Поэтому:
3₁₆ = 0011₂
Цифра A соответствует десятичному числу 10:
10 = 1 × 8 + 0 × 4 + 1 × 2 + 0 × 1
Поэтому:
A₁₆ = 1010₂
Соединяем полученные группы:
3A₁₆ = 00111010₂ = 111010₂
Нули в начале можно опустить, так как они не меняют значение числа.
Математические операции в шестнадцатеричной системе
С шестнадцатеричными числами можно выполнять те же операции, что и с десятичными: складывать, вычитать, умножать и делить.
Сложение в шестнадцатеричной системе
Шестнадцатеричные числа складывают справа налево. Если сумма в одном разряде равна 16 или больше, часть значения переносят в следующий разряд.
Пример:
Сложим A7₁₆ и 5C₁₆.
- Начинаем с крайнего правого разряда:
7 + C = 7 + 12 = 19₁₀
Десятичное число 19 в HEX записывается как 13₁₆. Поэтому в текущем разряде записываем 3, а 1 переносим в следующий разряд.
- Складываем оставшиеся цифры и перенесенную 1:
A + 5 + 1 = 10 + 5 + 1 = 16₁₀
Число 16 в HEX записывается как 10₁₆. Поэтому записываем 0, а единицу переносим в новый разряд слева.
- Получим:
A7₁₆ + 5C₁₆ = 103₁₆
Вычитание в шестнадцатеричной системе
Шестнадцатеричные числа вычитают также справа налево. Если верхняя цифра меньше нижней, то из следующего разряда слева занимают единицу. В текущем разряде эта единица дает 16, а не 10, как в десятичной системе.
Пример:
Вычтем 1F₁₆ из 3A₁₆.
- В крайнем правом разряде нужно вычесть F, то есть 15, из A, то есть 10. Поскольку 10 меньше 15, занимаем единицу из разряда слева.
В результате к 10 прибавляется 16:
10 + 16 = 26
- Теперь выполняем вычитание:
26 − 15 = 11
В HEX число 11 обозначается цифрой B.
- После заимствования в левом разряде вместо 3 остается 2:
2 − 1 = 1
- Получается:
3A₁₆ − 1F₁₆ = 1B₁₆
Умножение и деление шестнадцатеричных чисел
Умножение и деление выполняют по тем же правилам, что и в десятичной системе. Для небольших вычислений можно перевести числа в десятичную систему, выполнить операцию и записать результат в HEX.
Пример с умножением:
C₁₆ × 3₁₆ = 12₁₀ × 3₁₀ = 36₁₀ = 24₁₆
Пример с делением:
3C₁₆ ÷ 4₁₆ = 60₁₀ ÷ 4₁₀ = 15₁₀ = F₁₆
Итоги
- HEX — это шестнадцатеричная система счисления с символами 0–9 и A–F.
- Буквы A–F в ней выполняют роль цифр и представляют значения от 10 до 15.
- После F начинается запись уже двухразрядных чисел: 10₁₆, 11₁₆ и так далее.
- HEX — позиционная система, поэтому значение цифры зависит от ее места в числе.
- Разряды в HEX соответствуют степеням 16. Это 16⁰, 16¹, 16² и так далее.
- Шестнадцатеричные числа могут записываться как 2A₁₆, 0x2A, 2Ah. Цвета записываются как #2A2A2A.
- Одна цифра HEX соответствует четырем битам, поэтому HEX удобно использовать для компактной записи двоичных данных.
- HEX часто используют в программировании, при записи цветов, в адресах памяти, в Unicode, в IPv6, в хешах и идентификаторах.
- Перевод из HEX в десятичную систему выполняют через степени 16.
- Перевод из десятичной в HEX выполняют через последовательное деление на 16.
- Перевод между двоичной и шестнадцатеричной системами 1 цифра осуществляется по принципу HEX = 4 бита.
- Арифметические операции в HEX выполняются по тем же принципам, что и в десятичной системе, но с учетом основания 16.
