Шестнадцатеричная система счисления (часто обозначаемая как hex или hexadecimal) – позиционная система счисления с основанием 16. В ней используются :
- Цифры
0‑9(значения от 0 до 9); - Буквы
A, B, C, D, E, F(значения от 10 до 15).
Зачем нужна шестнадцатеричная система?
Шестнадцатеричная система широко применяется в информатике, электронике и программировании, потому что:
- Один шестнадцатеричный символ соответствует ровно 4 битам (полубайту). Это упрощает запись двоичных данных.
- Кодирование цветов в веб‑дизайне (например,
#FF5733) использует hex‑значения. - Адреса памяти, MAC‑адреса, UUID и многие протоколы передают данные в виде шестнадцатеричных строк.
Как переводить число из десятичной системы в шестнадцатеричную
Существует два простых метода: деление с остатком и использование таблиц. Рассмотрим деление.
Алгоритм деления с остатком
- Берём исходное десятичное число
N. - Делим
Nна 16, запоминаем целую частьQи остатокR(0 ≤ R < 16). - Записываем символ, соответствующий
R(0‑9 → «0‑9», 10‑15 → «A‑F»). - Заменяем
NнаQи повторяем шаги 2‑4, покаQне станет 0. - Полученные символы читаем в обратном порядке – это искомое шестнадцатеричное представление.
Пример: перевод 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 – смело задавайте их в комментариях!