Открыть сервис

BCD

BCD — это цифровой код, в котором каждая десятичная цифра числа представляется в виде четырёхбитного двоичного числа (тетрады). BCD (от англ. Binary-Coded Decimal, двоично-десятичный код) является формой записи чисел, при которой десятичная система счисления сохраняется, но каждая её цифра кодируется отдельно двоичным кодом. Этот способ отличается от стандартного двоичного представления числа, где всё число преобразуется в двоичную систему целиком. BCD широко применяется в вычислительной технике и электронике для упрощения ввода, вывода и обработки десятичных данных, особенно в калькуляторах, часах и измерительных приборах.

История

Идея кодирования десятичных цифр двоичными комбинациями возникла на заре развития вычислительной техники. Первые электромеханические и ранние электронные компьютеры, такие как ENIAC (1946), использовали десятичную арифметику, где каждая цифра хранилась в виде группы из десяти триггеров (один из десяти). Однако такой подход был громоздким. С появлением транзисторов и интегральных схем более эффективным оказалось представление каждой цифры четырьмя битами. В 1950-х годах BCD-кодирование стало стандартом для многих коммерческих компьютеров, например, IBM 650 (1953) и IBM 1401 (1959). В 1960-х годах BCD активно применялся в калькуляторах и терминалах, так как упрощал преобразование между десятичным вводом и внутренним представлением. С развитием микропроцессоров BCD-арифметика была включена в наборы команд многих процессоров (например, x86 содержит инструкции DAA, DAS для коррекции BCD-сложения), хотя в современных универсальных вычислениях она уступила место чистому двоичному представлению из-за более эффективного использования памяти и скорости.

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

В наиболее распространённом варианте BCD (8421-BCD) каждая десятичная цифра от 0 до 9 кодируется четырьмя битами, соответствующими её двоичному представлению:

Десятичная цифраBCD-код (8421)
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001

Комбинации 1010 (10), 1011 (11), 1100 (12), 1101 (13), 1110 (14) и 1111 (15) в стандартном BCD не используются и считаются недопустимыми (псевдотетрадами). При выполнении арифметических операций с BCD-числами требуется коррекция результата, если сумма двух тетрад превышает 9 (1001), так как перенос должен происходить не на 16, а на 10.

Например, десятичное число 427 в BCD будет записано как 0100 0010 0111. Каждая группа из четырёх битов представляет одну цифру: 4, 2 и 7 соответственно.

Виды BCD-кодов

Существует несколько разновидностей BCD-кодов, различающихся весом разрядов и способом кодирования:

Код 8421 (наиболее распространённый)

Вес разрядов: 8, 4, 2, 1. Соответствует прямому двоичному представлению цифры. Используется в большинстве цифровых устройств.

Код 2421 (код Айкена)

Вес разрядов: 2, 4, 2, 1. Обладает свойством самодополняемости: инвертирование всех битов кода даёт код для цифры, дополняющей исходную до 9. Например, код 3 (0011) при инверсии даёт 1100, что соответствует 6 (9-3=6). Это упрощает реализацию вычитания.

Код с избытком 3 (XS-3, Excess-3)

Каждая цифра кодируется как двоичное представление (цифра + 3). Например, 0 кодируется как 0011 (0+3), 1 — 0100 (1+3), 9 — 1100 (9+3). Также является самодополняющимся. Упрощает сложение и вычитание, так как переносы возникают при сумме, большей 9.

Код «2 из 5»

Каждая цифра кодируется пятью битами, из которых ровно два равны 1. Этот код обладает свойством обнаружения одиночных ошибок (изменение одного бита нарушает условие «ровно два единичных бита»). Использовался в ранних компьютерных системах и некоторых телетайпах.

Применение

BCD-кодирование находит применение в областях, где важна точность десятичного представления и удобство отображения:

Калькуляторы и финансовые вычисления

В карманных и бухгалтерских калькуляторах BCD позволяет избежать ошибок округления, характерных для двоичной арифметики с плавающей запятой. Например, число 0,1 в двоичной системе не может быть представлено точно, тогда как в BCD оно записывается как 0,0001 (0,1). Это критично для финансовых расчётов, где требуется точное соответствие десятичным дробям.

Цифровые часы и таймеры

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

Промышленная электроника и измерительные приборы

Мультиметры, частотомеры, датчики температуры и другие устройства с цифровым дисплеем используют BCD для передачи данных на индикаторы или в контроллеры. BCD-выходы часто используются в энкодерах и переключателях.

Микроконтроллеры и встроенные системы

Некоторые микроконтроллеры (например, семейство PIC, AVR) имеют аппаратную поддержку BCD-арифметики или библиотеки для работы с BCD. Это позволяет эффективно обрабатывать десятичные данные без преобразования в двоичную систему.

Протоколы передачи данных

В некоторых промышленных протоколах (например, Modbus) данные могут передаваться в формате BCD для совместимости с устаревшими устройствами или упрощения отладки.

Преимущества и недостатки

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

Недостатки

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →