belun.app Блог EN

Двоичная, восьмеричная, десятичная и HEX: руководство по системам счисления

Почему компьютеры используют двоичную и шестнадцатеричную системы, как переводить числа и где каждая из них встречается в реальном коде.

Двоичный код на тёмном экране компьютера — конвертер систем счисления для разработчиков

Большинство разработчиков регулярно сталкиваются минимум с тремя системами счисления — просто не всегда задумываются об этом. Вводите номер порта (десятичная), смотрите на CSS-цвет (#FF5733 — это шестнадцатеричная), читаете адрес памяти в стектрейсе (снова hex). А при работе с правами доступа в Unix всплывает восьмеричная.

Конвертер систем счисления позволяет ввести число в любой системе и мгновенно увидеть остальные три — без ручных вычислений.

Почему компьютеры используют двоичную систему

Компьютеры хранят всё в виде последовательностей 0 и 1, потому что транзисторы имеют два устойчивых состояния: включено и выключено. Никакого «почти включено» на аппаратном уровне нет. Поэтому каждое число, каждый символ и каждый пиксель в конечном счёте живут в двоичной записи.

Один двоичный разряд — это бит. Восемь бит — байт. Байт хранит значения от 0 (00000000) до 255 (11111111).

Шестнадцатеричная: компактная версия двоичной

Двоичная запись быстро становится громоздкой. Число 255 в двоичной — это 11111111, восемь символов вместо трёх. Шестнадцатеричная система решает проблему, группируя четыре бита в один символ.

В hex используются цифры 0–9 и буквы A–F (A = 10, B = 11, …, F = 15). Один hex-символ — четыре бита. Два hex-символа — один байт. Поэтому 255 в шестнадцатеричной — это FF: намного короче и напрямую соответствует двоичной записи (F = 1111, F = 1111).

Hex повсюду в программировании:

  • CSS-цвета: #1A2B3C — каждая пара символов это один цветовой канал (красный, зелёный, синий), по байту на каждый
  • Адреса памяти: 0x7fff5fbff8a0 — выводятся в hex, потому что короче и совпадают с границами байт
  • SHA-256 хеши: 64 hex-символа = 256 бит
  • Коды ASCII и Unicode: U+0041 — это буква A

Восьмеричная: наследие chmod

Восьмеричная система (основание 8, цифры 0–7) была распространена до того, как hex вытеснил её почти везде. Главный её рудимент сегодня — права доступа в Unix.

Когда вы пишете chmod 755 script.sh, цифры — это восьмеричные числа. Каждая цифра представляет три бита: чтение, запись и выполнение:

  • 7 = 111 в двоичной = чтение + запись + выполнение
  • 5 = 101 в двоичной = чтение + выполнение (без записи)
  • 4 = 100 в двоичной = только чтение

То есть 755 означает: владелец может всё, группа и остальные — читать и выполнять, но не писать. Три восьмеричных цифры, девять битов прав, одна команда.

Как переводить числа между системами

Алгоритм всегда одинаков: сначала привести к десятичной, потом перевести в целевую систему.

Двоичное 1101 → десятичное: идём справа налево, умножаем каждый бит на соответствующую степень двойки (2⁰, 2¹, 2², 2³):

  • 1 × 1 = 1
  • 0 × 2 = 0
  • 1 × 4 = 4
  • 1 × 8 = 8
  • Итого: 13

Десятичное 13 → hex: делим на 16, берём остатки. 13 ÷ 16 = 0, остаток 13. Остаток 13 = D. Итак, 13 в десятичной — это D в hex.

Руками такое считать никто не будет. Конвертер систем счисления делает это мгновенно — введите число в любое поле, остальные обновятся сразу.

Где это реально пригождается

Несколько ситуаций, где переключение систем счисления важно на практике:

Битовые флаги. Если выставляете флаги в байте, двоичная запись делает позиции битов очевидными. 0b10110000 нагляднее, чем 176, когда важно понять, какие именно биты установлены.

Работа с цветами. #FF8800 легче корректировать по каналам, чем переводить в десятичную. FF — максимум, 88 — среднее значение, 00 — ноль. Сразу видно: красный на максимуме, зелёный — средний, синего нет.

IP-адреса и сети. CIDR-нотацию и маски подсетей проще понять, умея переводить числа между десятичной и двоичной системами.

Отладка сериализованных данных. Protocol Buffers, CBOR и другие бинарные форматы показывают сырые байты в hex в большинстве отладчиков. Если знаешь, что 0x01 — это просто 1, а 0xFF — 255, читать дампы становится быстрее.


Откройте Конвертер систем счисления, введите число в любой системе, которую знаете, — остальные появятся сразу. Никакой математики, никаких таблиц.

Попробуйте инструмент

Конвертер систем счисления →