Числа в шестнадцатеричной системе счисления
Шестнадцатеричная система счисления использует 16 символов (0–9, A–F) и широко применяется в программировании, веб-дизайне и компьютерных технологиях. Калькулятор позволяет переводить числа между десятичной, двоичной и шестнадцатеричной системами, а также выполнять арифметические операции. Материал полезен программистам, студентам IT-специальностей и всем, кто работает с цветовыми кодами или машинным представлением данных.
Что такое шестнадцатеричная система счисления
Шестнадцатеричная (hex, hexadecimal) система счисления – позиционная система с основанием 16. В ней используются 16 символов: цифры от 0 до 9 и латинские буквы от A до F. Каждая позиция (разряд) числа представляет степень числа 16.
Алфавит системы:
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – цифры (соответствуют десятичным 0–9)
- A, B, C, D, E, F – буквы (соответствуют десятичным 10, 11, 12, 13, 14, 15)
Шестнадцатеричная система широко применяется в информатике, так как одна hex-цифра точно соответствует четырём битам (полубайту), что упрощает представление двоичных данных в компактной форме.
Таблица соответствий систем счисления
| Десятичная | Двоичная | Шестнадцатеричная |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 3 | 0011 | 3 |
| 4 | 0100 | 4 |
| 5 | 0101 | 5 |
| 6 | 0110 | 6 |
| 7 | 0111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
| 255 | 11111111 | FF |
| 256 | 100000000 | 100 |
Как переводить десятичные числа в шестнадцатеричные
Алгоритм перевода методом деления:
- Разделите исходное десятичное число на 16
- Запишите остаток (это будет младшая hex-цифра)
- Если остаток ≥ 10, замените его буквой (10→A, 11→B и т.д.)
- Используйте частное для следующей итерации
- Повторяйте, пока частное не станет равным нулю
- Запишите остатки в обратном порядке (снизу вверх)
Пример 1: перевод числа 156
156 ÷ 16 = 9 (остаток 12 = C)
9 ÷ 16 = 0 (остаток 9 = 9)
Результат: 9C₁₆
Пример 2: перевод числа 4095
4095 ÷ 16 = 255 (остаток 15 = F)
255 ÷ 16 = 15 (остаток 15 = F)
15 ÷ 16 = 0 (остаток 15 = F)
Результат: FFF₁₆
Пример 3: перевод числа 1000
1000 ÷ 16 = 62 (остаток 8 = 8)
62 ÷ 16 = 3 (остаток 14 = E)
3 ÷ 16 = 0 (остаток 3 = 3)
Результат: 3E8₁₆
Как переводить шестнадцатеричные числа в десятичные
Формула позиционного разложения:
Для числа вида a₍ₙ₎a₍ₙ₋₁₎…a₂a₁a₀ в hex:
Десятичное значение = aₙ×16ⁿ + aₙ₋₁×16ⁿ⁻¹ + … + a₂×16² + a₁×16¹ + a₀×16⁰
где aᵢ – значение цифры в позиции i (начиная справа с 0).
Пример 1: перевод 3A7₁₆
3A7₁₆ = 3×16² + A×16¹ + 7×16⁰
= 3×256 + 10×16 + 7×1
= 768 + 160 + 7
= 935₁₀
Пример 2: перевод FF₁₆
FF₁₆ = F×16¹ + F×16⁰
= 15×16 + 15×1
= 240 + 15
= 255₁₀
Пример 3: перевод 1C2B₁₆
1C2B₁₆ = 1×16³ + C×16² + 2×16¹ + B×16⁰
= 1×4096 + 12×256 + 2×16 + 11×1
= 4096 + 3072 + 32 + 11
= 7211₁₀
Перевод между двоичной и шестнадцатеричной системами
Одна hex-цифра представляет ровно 4 бита, что делает перевод особенно простым.
Из двоичной в шестнадцатеричную:
- Разбейте двоичное число на группы по 4 бита справа налево
- Дополните левую группу нулями до 4 бит при необходимости
- Переведите каждую группу в hex-цифру по таблице
Пример: 11010110101₂ → hex
Разбиение: 110 1011 0101 → 0110 1011 0101
Перевод по группам:
0110₂ = 6₁₆
1011₂ = B₁₆
0101₂ = 5₁₆
Результат: 6B5₁₆
Из шестнадцатеричной в двоичную:
- Замените каждую hex-цифру соответствующей 4-битной группой
- Объедините группы
Пример: 2F8₁₆ → двоичная
2₁₆ = 0010₂
F₁₆ = 1111₂
8₁₆ = 1000₂
Результат: 001011111000₂ (или 10111110002 после удаления ведущих нулей)
Арифметические операции в шестнадцатеричной системе
Сложение
Правила те же, что в десятичной системе, но при превышении 15 (F) происходит перенос в следующий разряд.
Пример: A3₁₆ + 5C₁₆
A3
+ 5C
-----
FF
Поразрядно:
3 + C = 3 + 12 = 15 = F (переноса нет)
A + 5 = 10 + 5 = 15 = F
Ответ: FF₁₆
Пример с переносом: 7E₁₆ + A5₁₆
7E
+ A5
-----
123
Поразрядно:
E + 5 = 14 + 5 = 19 = 3₁₆ (перенос 1, т.к. 19 = 1×16 + 3)
7 + A + 1 = 7 + 10 + 1 = 18 = 2₁₆ (перенос 1, т.к. 18 = 1×16 + 2)
Ответ: 123₁₆
Вычитание
При необходимости заимствуем 16 из старшего разряда.
Пример: B5₁₆ − 2A₁₆
B5
- 2A
-----
8B
Поразрядно:
5 − A = 5 − 10: заимствуем 16, получаем (5+16) − 10 = 11 = B
(B−1) − 2 = A − 2 = 10 − 2 = 8
Ответ: 8B₁₆
Умножение
Используется таблица умножения hex-цифр или перевод в десятичную систему.
Пример: C₁₆ × 5₁₆
C₁₆ × 5₁₆ = 12₁₀ × 5₁₀ = 60₁₀ = 3C₁₆
Применение шестнадцатеричных чисел
Цветовые коды в веб-дизайне
RGB-цвета задаются в формате #RRGGBB, где каждая пара hex-цифр представляет интенсивность красного, зелёного и синего (0–255).
Примеры:
#FF0000– красный (255, 0, 0)#00FF00– зелёный (0, 255, 0)#0000FF– синий (0, 0, 255)#FFFFFF– белый (255, 255, 255)#000000– чёрный (0, 0, 0)#FF5733– оранжево-красный (255, 87, 51)
Адреса памяти
В программировании адреса памяти записываются с префиксом 0x:
0x0000– начальный адрес0xFFFF– максимальный адрес в 16-битной системе (65535)0x7FFFFFFF– максимальное положительное значение для signed int (2 147 483 647)
MAC-адреса
Физические адреса сетевых устройств состоят из 6 байт, записанных hex-числами:
00:1A:2B:3C:4D:5EAC:DE:48:00:11:22
Символы Unicode
Коды символов в стандарте Unicode:
U+0041– латинская буква AU+00A9– символ копирайта ©U+20AC– символ евро €
Обозначения и форматы записи
Префиксы для указания системы счисления:
- 0x – в языках C, C++, Java, JavaScript:
0x2F,0xABCD - **$** – в ассемблере, Pascal: `$FF
,$1234` - # – в HTML/CSS для цветов:
#FF5733 - h – суффикс в некоторых ассемблерах:
3Fh,A0h - ₁₆ – математический индекс: 2F₁₆, ABCD₁₆
Регистр букв (A–F или a–f) обычно не имеет значения: FF = ff = Ff = fF.
Полезные шестнадцатеричные константы
| Hex | Десятичное | Двоичное | Значение |
|---|---|---|---|
| 0x00 | 0 | 00000000 | Минимальный байт |
| 0xFF | 255 | 11111111 | Максимальный байт |
| 0x100 | 256 | 100000000 | Один за пределами байта |
| 0x400 | 1024 | 10000000000 | 1 килобайт (условно) |
| 0x7FF | 2047 | 11111111111 | Максимум для 11 бит |
| 0x8000 | 32768 | 1000000000000000 | Старший бит 16-битного числа |
| 0xFFFF | 65535 | 1111111111111111 | Максимум для 16 бит (unsigned) |
Особенности работы с hex-числами
Чётность и нечётность
Младшая hex-цифра определяет чётность всего числа:
- Чётные: 0, 2, 4, 6, 8, A, C, E
- Нечётные: 1, 3, 5, 7, 9, B, D, F
Примеры:
2A8₁₆– чётное (заканчивается на 8)1F3₁₆– нечётное (заканчивается на 3)
Деление и остатки
При делении hex-числа на 16 остаток равен младшей hex-цифре, а частное – числу без неё:
3A7₁₆ ÷ 16₁₆ = 3A₁₆(остаток 7₁₆)FF₁₆ ÷ 16₁₆ = F₁₆(остаток F₁₆)
Степени двойки
Степени двойки имеют простую форму в hex (единица и нули):
- 2⁴ = 16₁₀ = 10₁₆
- 2⁸ = 256₁₀ = 100₁₆
- 2¹² = 4096₁₀ = 1000₁₆
- 2¹⁶ = 65536₁₀ = 10000₁₆
Типичные ошибки при работе с hex
1. Путаница букв и цифр
- Неправильно: принять O (букву) за 0 (ноль) или I (ай) за 1
- Правильно: в hex используются только буквы A–F
2. Неверная интерпретация формата
10₁₆ ≠ 10₁₀(hex 10 = десятичное 16)- Всегда обращайте внимание на префикс или индекс системы
3. Ошибки переноса при сложении
- Забыть, что перенос происходит при сумме ≥ 16, а не ≥ 10
4. Неправильная замена букв числами
- B = 11, а не 12 (часто путают порядковый номер)
- Запомните: A=10, B=11, C=12, D=13, E=14, F=15
Практические примеры расчётов
Пример 1: Перевод IP-адреса
IPv4-адрес 192.168.1.254 в hex:
192 = C0₁₆
168 = A8₁₆
1 = 01₁₆
254 = FE₁₆
Результат: C0.A8.01.FE
Пример 2: Размер файла
Файл размером 5120 байт в hex:
5120 ÷ 16 = 320 (остаток 0)
320 ÷ 16 = 20 (остаток 0)
20 ÷ 16 = 1 (остаток 4)
1 ÷ 16 = 0 (остаток 1)
Результат: 1400₁₆ байт = 1.25 КБ
Пример 3: Работа с битовыми масками
Проверка состояния флагов в байте 0xA5:
A5₁₆ = 10100101₂
Бит 0: 1 (включен)
Бит 1: 0 (выключен)
Бит 2: 1 (включен)
Бит 5: 1 (включен)
Бит 7: 1 (включен)
Пример 4: Сложение адресов
Базовый адрес 0x1000 + смещение 0x2BC:
1000
+ 02BC
------
12BC₁₆
Проверка: 4096₁₀ + 700₁₀ = 4796₁₀ = 12BC₁₆
Инструменты для работы с hex
Калькуляторы операционных систем:
- Windows: Калькулятор в программистском режиме (Win + R → calc → View → Programmer)
- macOS: Calculator в программистском режиме (View → Programmer)
- Linux: galculator, qalculate
Онлайн-инструменты:
- Конвертеры систем счисления
- Калькуляторы цветов
- HEX-редакторы
Командная строка:
- Python:
hex(255)→'0xff',int('FF', 16)→255 - JavaScript:
(255).toString(16)→'ff',parseInt('FF', 16)→255 - Bash:
echo "obase=16; 255" | bc→FF
Советы по быстрому счёту
Запомните ключевые соответствия:
- F₁₆ = 15₁₀
- 10₁₆ = 16₁₀
- 100₁₆ = 256₁₀
- FF₁₆ = 255₁₀
Быстрое умножение на 16: Добавьте 0 справа в hex (как ×10 в десятичной):
- 5₁₆ × 16 = 50₁₆
- A₁₆ × 16 = A0₁₆
Быстрое деление на 16: Отбросьте последнюю hex-цифру:
- 3F₁₆ ÷ 16 = 3₁₆ (остаток F₁₆)
Удвоение числа: Если старшая цифра < 8, умножьте каждую цифру на 2 с учётом переноса:
- 2A₁₆ × 2: 2×2=4, A×2=14₁₆ → 54₁₆
Заключение
Шестнадцатеричная система счисления – компактный и удобный способ представления данных в компьютерных системах. Понимание hex необходимо для низкоуровневого программирования, отладки, работы с цветами и сетевыми протоколами. Используйте онлайн-калькулятор для быстрого и точного перевода чисел, проверки расчётов и выполнения операций между системами счисления.
Часто задаваемые вопросы
Как перевести десятичное число в шестнадцатеричное?
Делите десятичное число на 16, записывайте остаток (0–9 или A–F), затем делите частное снова, пока оно не станет нулём. Итоговое hex-число читается снизу вверх. Например, 255 ÷ 16 = 15 (остаток 15=F), 15 ÷ 16 = 0 (остаток 15=F) → FF.
Что означают буквы A, B, C, D, E, F в шестнадцатеричной системе?
Буквы обозначают числа от 10 до 15: A=10, B=11, C=12, D=13, E=14, F=15. Они используются, чтобы представить все 16 цифр одним символом.
Как преобразовать шестнадцатеричное число в десятичное?
Умножьте каждую цифру hex-числа (справа налево) на 16 в степени её позиции (начиная с 0), затем сложите результаты. Пример: 2A = 2×16¹ + 10×16⁰ = 32 + 10 = 42.
Где применяются шестнадцатеричные числа в реальной жизни?
В веб-дизайне для цветовых кодов (#FF5733), в программировании для адресов памяти (0x7FFF), в сетевых технологиях для MAC-адресов (00:1A:2B:3C:4D:5E), в кодировании символов Unicode (U+00A9).
Почему в программировании часто используют hex вместо десятичной системы?
Шестнадцатеричная система компактна: одна hex-цифра представляет ровно 4 бита (2⁴=16). Это упрощает работу с байтами (2 hex-цифры = 1 байт), чтение машинного кода и отладку.
Как быстро проверить правильность перевода числа в hex?
Переведите результат обратно в десятичную систему по формуле позиционного разложения. Если получили исходное число – перевод верен. Также можно использовать онлайн-калькулятор для автоматической проверки.