Главная / Без рубрики / Системы счисления: двоичная, шестнадцатеричная, двоично‑десятичный код (BCD)

Системы счисления: двоичная, шестнадцатеричная, двоично‑десятичный код (BCD)

1. Введение: зачем нужны разные системы счисления

В цифровой технике и программировании используются недесятичные системы счисления по следующим причинам:

  • аппаратная реализация: электроника «понимает» только два состояния (0 / 1);
  • компактность записи: шестнадцатеричная система сокращает длинные двоичные последовательности;
  • совместимость с десятичной: BCD упрощает ввод‑вывод чисел для человека.

Ключевые понятия:

  • основание системы (количество цифр): 2 (двоичная), 10 (десятичная), 16 (шестнадцатеричная);
  • разряд (позиция цифры в числе);
  • вес разряда (степень основания: bn).

2. Двоичная система счисления (base‑2)

2.1. Основы

  • Алфавит: 0, 1.
  • Основание: 2.
  • Пример числа: 10112​.

Разложение по степеням двойки:

10112​=1⋅23+0⋅22+1⋅21+1⋅20=8+0+2+1=1110​.

2.2. Свойства

  • минимальное основание для цифровой логики;
  • простота реализации (транзистор: открыт / закрыт);
  • избыточность записи (длинная последовательность битов).

2.3. Операции в двоичной системе

  • Сложение:1011+ 110111000​​ (11 + 13 = 24).
  • Умножение:101× 11101101  1111​​ (5 × 3 = 15).

2.4. Применение

  • внутренняя работа процессоров;
  • хранение данных в памяти;
  • логические схемы (вентили И, ИЛИ, НЕ).

3. Шестнадцатеричная система счисления (hex, base‑16)

3.1. Алфавит и правила записи

  • Цифры: 0–9, A (10), B (11), C (12), D (13), E (14), F (15).
  • Обозначение: префикс 0x (например, 0xA3) или суффикс h (A3h).
  • Пример: A316​=10⋅161+3⋅160=16310​.

3.2. Связь с двоичной системой

  • 1 hex‑цифра = 4 бита (полубайт, nibble):
    • 016​=00002​;
    • F16​=11112​;
    • A16​=10102​.

Преобразование:

  • B416​→1011 01002​;
  • 1101 00112​→D316​.

3.3. Преимущества

  • компактность: 0xFF вместо 11111111;
  • удобство чтения для человека;
  • стандартизация (адреса памяти, цвета RGB, дампы памяти).

3.4. Примеры использования

  • адресация памяти (например, 0x8000);
  • цветовые коды (#FF5733);
  • отладка (шестнадцатеричные дампы);
  • ассемблерные инструкции.

4. Двоично‑десятичный код (BCD, Binary‑Coded Decimal)

4.1. Принцип кодирования

  • Каждая десятичная цифра (0–9) кодируется 4 битами (тетрадой).
  • Два формата:
    1. Неупакованный BCD: 1 цифра = 1 байт (младшие 4 бита — цифра, старшие — 0).
    2. Упакованный BCD: 1 байт = 2 цифры (по 4 бита).

Примеры:

  • Число 27:
    • неупакованный: 00000010 00000111;
    • упакованный: 00100111.
  • Число 91:
    • упакованный: 10010001.

4.2. Допустимые и недопустимые комбинации

  • Допустимы: 0000–1001 (0–9).
  • Недопустимы: 1010–1111 (A–F) — ошибка в BCD.

4.3. Операции с BCD

  • Сложение:
    1. Сложить двоичные тетрады.
    2. Если результат > 9 или есть перенос — добавить 6 (01102​).
    Пример: 5 + 7 = 12
    • двоично: 0101+0111=1100 (12₁₀);
    • коррекция: 1100+0110=1 0010 → 0001 0010 (12 в BCD).
  • Вычитание: аналогично, но с вычитанием 6 при заёме.

4.4. Преимущества BCD

  • точность при работе с десятичными дробями (нет ошибок округления, как в float);
  • простой ввод‑вывод (калькуляторы, дисплеи);
  • соответствие денежным расчётам (копейки, центы).

4.5. Недостатки

  • избыточность (4 бита на цифру вместо ~3,32 бита теоретически);
  • сложность арифметики (нужна коррекция);
  • неэффективность для вычислений общего назначения.

4.6. Применение

  • калькуляторы и кассовые аппараты;
  • финансовые системы (валютные операции);
  • цифровые часы и таймеры;
  • интерфейсы с семисегментными индикаторами.

5. Сравнение систем счисления

ПараметрДвоичнаяШестнадцатеричнаяBCD
Основание21610 (кодируется двоично)
Алфавит0,10–9,A–F0–9 (по 4 бита)
КомпактностьНизкаяВысокаяСредняя
Удобство для человекаНизкоеВысокоеВысокое (для десятичных чисел)
Аппаратная сложностьМинимальнаяСредняяСредняя (нужна коррекция)
Типичное применениеЛогика, памятьАдреса, дампыФинансы, индикация

6. Алгоритмы перевода между системами

6.1. Десятичное → двоичное

  • Деление на 2 с остатком.
    Пример: 25₁₀ → ?₂
  • 25 ÷ 2 = 12 (ост. 1)
  • 12 ÷ 2 = 6 (ост. 0)
  • 6 ÷ 2 = 3 (ост. 0)
  • 3 ÷ 2 = 1 (ост. 1)
  • 1 ÷ 2 = 0 (ост. 1)
    → 110012​.

6.2. Двоичное → десятичное

  • Сумма степеней двойки.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *