BCD и код Грея

Специализированные двоичные кодировки

Изучить специализированные коды

Не все двоичные представления являются чистыми системами с основанием 2. BCD (двоично-десятичный код) и код Грея — это специализированные кодировки, решающие конкретные задачи в цифровых системах: от отображения чисел на калькуляторах до считывания данных с поворотных энкодеров без ошибок.

Двоично-десятичный код (BCD)

Что такое BCD?

BCD представляет каждую десятичную цифру в виде 4-битного двоичного числа:

ДесятичноеBCDЧистое двоичное
000000000
501010101
910011001
100001 00001010
420100 0010101010
991001 10011100011

Ключевое отличие

BCD использует 4 бита на каждую десятичную цифру; чистое двоичное представление компактнее, но сложнее для отображения.

Зачем использовать BCD?

Простое десятичное отображение

  • Каждая группа из 4 бит → одна цифра на семисегментном индикаторе
  • Не требуется сложное преобразование из двоичного в десятичное
  • Используется в калькуляторах и измерительных приборах

Точные десятичные значения

  • Финансовые расчёты требуют точного десятичного представления
  • 0,10 точно представляется в BCD, но приблизительно в двоичной плавающей точке
  • Позволяет избежать ошибок округления при работе с валютами

Удобное для чтения хранение

  • Временные метки часто хранятся в BCD
  • Легко читаются в шестнадцатеричных дампах
  • Часы реального времени BIOS используют BCD

Арифметика BCD

Проблема сложения

При сложении в BCD требуется коррекция, если результат > 9:

  • 0101 + 0100 = 1001 (5 + 4 = 9) ✓ Допустимый BCD
  • 0111 + 0101 = 1100 (7 + 5 = 12) ✗ Недопустимый BCD
  • Необходимо прибавить 6 (0110) для коррекции: 1100 + 0110 = 0001 0010 = 12

Почему прибавляют 6?

BCD использует только значения 0000–1001 (0–9). Значения 1010–1111 (10–15) недопустимы. Прибавление 6 вызывает перенос в следующий разряд.

Разновидности BCD

Упакованный BCD

  • Две цифры в одном байте
  • Более эффективное хранение
  • Пример: 42 = 0100 0010 в одном байте

Неупакованный BCD

  • Одна цифра на байт (старшие 4 бита не используются / равны нулю)
  • Более простая обработка
  • Пример: 42 = 00000100 00000010 (два байта)

BCD с избытком 3 (Excess-3)

  • К каждой цифре прибавляется 3 перед кодированием
  • Упрощает некоторые арифметические схемы
  • 0 = 0011, 9 = 1100

Код Грея

Что такое код Грея?

Код Грея — это двоичная последовательность, в которой между соседними значениями изменяется только один бит:

ДесятичноеДвоичноеКод Грея
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100

Почему код Грея важен

Проблема, которую решает код Грея

В обычном двоичном коде при переходе от 7 (0111) к 8 (1000) изменяются 4 бита одновременно.

  • Если датчики не переключаются в точности одновременно
  • Возникают кратковременные ложные показания
  • Могут кратковременно считываться значения 0000, 0001, 0011, 0111 или 1111

Решение с помощью кода Грея

  • За один раз изменяется только один бит
  • Нет неоднозначных промежуточных состояний
  • Незаменим для энкодеров положения

Применения кода Грея

Поворотные энкодеры

  • Определение положения двигателя
  • Регуляторы громкости (цифровые)
  • Углы поворота в робототехнике
  • Позиционирование станков с ЧПУ

Минимизация ошибок

  • Аналого-цифровое преобразование
  • Генетические алгоритмы (кроссинговер)
  • Карты Карно (минимизация логических функций)

Связь

  • Некоторые коды с исправлением ошибок
  • Определённые схемы модуляции

Преобразование двоичного кода в код Грея

Метод

  1. Старший бит (MSB) остаётся без изменений
  2. Каждый последующий бит получается операцией XOR с битом слева

Пример: Преобразование 1011 (двоичное) в код Грея

  • MSB: 1 (без изменений)
  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 1 XOR 1 = 0
  • Результат: 1110 (код Грея)

Формула

Gray[i] = Binary[i] XOR Binary[i+1]

Gray[MSB] = Binary[MSB]

Преобразование кода Грея в двоичный

Метод

  1. Старший бит (MSB) остаётся без изменений
  2. Каждый бит Грея подвергается операции XOR с предыдущим двоичным битом

Пример: Преобразование 1110 (код Грея) в двоичное

  • MSB: 1 (без изменений)
  • 1 XOR 1 = 0
  • 0 XOR 1 = 1
  • 1 XOR 0 = 1
  • Результат: 1011 (двоичное)

Заключение

BCD и код Грея — это специализированные двоичные кодировки, решающие конкретные задачи. BCD упрощает десятичное отображение и обеспечивает точную десятичную арифметику, что важно для калькуляторов и финансовых систем. Код Грея гарантирует, что между соседними значениями изменяется только один бит, что незаменимо для энкодеров положения и предотвращения ошибок. Хотя ни один из них не распространён так, как чистое двоичное представление, их понимание показывает, как различные числовые представления служат различным инженерным задачам.

Похожие статьи

BCD и код Грея: специализированные двоичные кодировки | YounitConverter