В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Двоично-десятичный код (англ. binary-coded decimal), BCD, 8421-BCD — форма записи рациональных чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода. Таким образом, каждая тетрада двоично-десятичного числа может принимать значения от 00002 (010) до 10012 (910).
Например, десятичное число 31110 будет записано в двоичной системе счисления в двоичном коде как 1 0011 01112, а в двоично-десятичном коде как 0011 0001 0001BCD.
При помощи 4 бит можно закодировать 16 цифр. Из них используются 10. Остальные 6 комбинаций в двоично-десятичном коде являются запрещёнными. Таблица соответствия двоично-десятичного кода и десятичных цифр:
Двоично-десятичный код | Десятичный код | |||
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 2 |
0 | 0 | 1 | 1 | 3 |
0 | 1 | 0 | 0 | 4 |
0 | 1 | 0 | 1 | 5 |
0 | 1 | 1 | 0 | 6 |
0 | 1 | 1 | 1 | 7 |
1 | 0 | 0 | 0 | 8 |
1 | 0 | 0 | 1 | 9 |
Двоично-десятичный код также применяется в телефонной связи. В этом случае кроме десятичных цифр кодируются символы '*', '#' и некоторые другие. Для записи этих символов в двоично-десятичном коде используются запрещенные комбинации:
Двоично-десятичный код | Десятичный код | |||
---|---|---|---|---|
1 | 0 | 1 | 0 | * (звёздочка) |
1 | 0 | 1 | 1 | # (решётка) |
1 | 1 | 0 | 0 | + (плюс) |
1 | 1 | 0 | 1 | - (минус) |
1 | 1 | 1 | 0 | , (десятичная запятая) |
1 | 1 | 1 | 1 | Символ гашения |
По этим причинам двоично-десятичный формат применяется в калькуляторах — калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге.
Поэтому, при сложении и вычитании чисел формата 8421-BCD действуют следующие правила:
Пример операции сложения двоично-десятичных чисел:
Требуется: Найти число A = D + C, где D = 3927, C = 4856
Решение:
Представим числа D и C в двоично-десятичной форме:
D = 392710 = 0011 1001 0010 0111BCD
C = 485610 = 0100 1000 0101 0110BCD
Суммируем числа D и С по правилам двоичной арифметики:
* ** 0011 1001 0010 0111 + 0100 1000 0101 0110 ___________________ = 1000 0001 0111 1101 - Двоичная сумма + 0110 0110 - Коррекция ___________________ 1000 0111 1000 0011
'*' — тетрада, из которой был перенос в старшую тетраду
'**' — тетрада с запрещённой комбинацией битов
В тетраду, помеченную символом *, добавляем шестёрку, так как по правилам двоичной арифметики перенос унёс с собой 16, а по правилам десятичной арифметики должен был унести 10. В тетраду, помеченную символом **, добавляем шестёрку и разрешаем распространение переноса, так как комбинация битов 1101 (что соответствует десятичному числу 13) является запрещённой.
В системе кодирования «2 из 5» одна десятичная цифра кодируется 5 битами, из которых 2 бита установлены в 1, а 3 бита — в 0, что даёт ровно 10 комбинаций. Такая система обеспечивает лучшее обнаружение ошибок, поскольку изменение одного бита всегда даст недопустимую комбинацию; также всегда обнаруживаются однонаправленные изменения (несколько изменений 0→1 или 1→0). Кодирование «2 из 5» использовалось в компьютерах серий IBM 7070, IBM 7072 и IBM 7074; также применяется в некоторых странах для маркирования почты штрих-кодом.
Уплотнённые десятичные числа позволяют разместить 3 десятичные цифры в 10 битах (210=1024 комбинации, что достаточно для 3 десятичных цифр), причём кодирование устроено так, что преобразование между 10-битным кодом и тремя отдельными десятичными цифрами можно осуществить с помощью простой и быстрой логической схемы. Такое кодирование используется в десятичных числах с плавающей запятой, описанных в стандарте IEEE 754-2008.