Шестнадцатеричная система счисления

Шестнадцатеричная система делает код понятным! Узнайте, зачем нужен hex программистам, и как буквы от A до F упрощают жизнь.

Бесплатная консультация юриста

+7 (800) -02-87-29

Реклама jurik.ru

Шестнадцатеричная система счисления (часто обозначаемая как hex или hexadecimal) – позиционная система счисления с основанием 16. В ней используются :

  • Цифры 0‑9 (значения от 0 до 9);
  • Буквы A, B, C, D, E, F (значения от 10 до 15).

Зачем нужна шестнадцатеричная система?

Шестнадцатеричная система широко применяется в информатике, электронике и программировании, потому что:

  1. Один шестнадцатеричный символ соответствует ровно 4 битам (полубайту). Это упрощает запись двоичных данных.
  2. Кодирование цветов в веб‑дизайне (например, #FF5733) использует hex‑значения.
  3. Адреса памяти, MAC‑адреса, UUID и многие протоколы передают данные в виде шестнадцатеричных строк.

Как переводить число из десятичной системы в шестнадцатеричную

Существует два простых метода: деление с остатком и использование таблиц. Рассмотрим деление.

Алгоритм деления с остатком

  1. Берём исходное десятичное число N.
  2. Делим N на 16, запоминаем целую часть Q и остаток R (0 ≤ R < 16).
  3. Записываем символ, соответствующий R (0‑9 → «0‑9», 10‑15 → «A‑F»).
  4. Заменяем N на Q и повторяем шаги 2‑4, пока Q не станет 0.
  5. Полученные символы читаем в обратном порядке – это искомое шестнадцатеричное представление.

Пример: перевод 1250₁₀ в шестнадцатеричную систему

1250 ÷ 16 = 78, остаток 2 → «2»
78 ÷ 16 = 4, остаток 14 → «E»
4 ÷ 16 = 0, остаток 4 → «4»
 

Итак, 1250₁₀ = 4E2₁₆.

Как переводить число из шестнадцатеричной системы в десятичную

Для обратного преобразования используем позиционный вес:

Н = Σ (d_i × 16ⁱ), где d_i – значение i‑го символа (от младшего разряда), i – позиция (0, 1, 2 …).

Пример: перевод 3B7₁₆ в десятичную систему

3B7₁₆ = 3·16² + B·16¹ + 7·16⁰
 = 3·256 + 11·16 + 7·1 = 768 + 176 + 7
 = 951₁₀
 

Часто используемые сокращения и префиксы

  • В языках C/C++, Java, JavaScript: 0x перед числом, например 0xFF.
  • В ассемблере часто используют суффикс h (например, FFh).
  • В Python: функция hex возвращает строку вида '0xff'.

Практические задачи

Сложение двух шестнадцатеричных чисел

Сложим 1A3₁₆ и 2F7₁₆:

 1 A 3
 + 2 F 7
 ----------
 4 9 A (перенос 1 из разряда 16³)
 

Вычисление маски подсети в IPv4

Подсеть 255.255.240.0 в шестнадцатеричной записи:

255 → FF
255 → FF
240 → F0
0 → 00
 

Особенности при работе с шестнадцатеричными числами

  • Регистрозависимость: в большинстве языков регистр букв не важен (0x1a = 0x1A).
  • Ведущие нули: часто добавляют для выравнивания (например, 0x00FF вместо 0xFF).
  • Переполнение: при работе с фиксированным размером (8‑, 16‑, 32‑бит) важно учитывать, что FF₁₆ + 1 = 100₁₆ (переполнение).

Краткое резюме

Шестнадцатеричная система счисления – незаменимый инструмент в программировании и цифровой электронике. Знание алгоритмов перевода между десятичной и шестнадцатеричной системами, а также умение выполнять арифметические операции в hex‑формате, позволяет эффективно работать с памятью, сетевыми протоколами и графикой.

Полезные ссылки

  • Шестнадцатеричная система счисления – Википедия
  • JavaScript: Number.toString(16)
  • Convert Decimal to Hexadecimal (англ.)

Если у вас остались вопросы по работе с числами в системе счисления с основанием 16 – смело задавайте их в комментариях!