Двоично-десятичный код (англ. binary-coded decimal), BCD, 8421-BCD - это такая форма записи целых чисел, когда в виде четырехбитного двоичного кода записывается каждый десятичный разряд числа.
К примеру, десятичное число 31110 в двоичной системе счисления записано будет в двоичном коде так : 1 0011 01112, в двоично-десятичном коде оно будет записано как 0001 0001BCD.
Кстати, на нашем сайте вы можете перевести любой текст в десятичный, шестнадцатеричный, двоичный код воспользовавшись Калькулятором кодов онлайн.
В формате BCD из Unsigned Integer простой способ получения данных такой:
Число "A" в формате U16 = 542,
теперь, выполнив преобразование его в BCD (проделать операцию можно на калькуляторе ОС Windows) получаем :
542 -> (Hex to Dec) -> 1346 -> (Dec to Bin) -> 10101000010
Особенности десятичного кода.
Из преимуществ двоично-десятичного кода можно выделить такие:
- Вывод чисел на индикацию упрощен - требуется просто сделать вывод на индикацию каждого полубайта, вместо последовательного деления на 10 и аналогично, с цифровой клавиатуры проще ввод данных.
- При переводе в доступный человекочитаемый десятичный формат или наоборот - не теряется точность для дробных чисел (с фиксированной, а также плавающей запятой).
- Упрощены операции умножения или деления на 10, а также округление.
Учитывая все эти преимущества, формат двоично-десятичного кода применяется в калькуляторах, ведь в простейших арифметических операциях, калькулятор должен в точности такой же самый выводить результат, какой человек подсчитает на бумаге.
Кроме достоинств, двоично-десятичный код имеет и свои характерные недостатки: требуется больше памяти и усложнены арифметические операции. Так как, вместо 16 в в 8421-BCD используются только 10 возможных комбинаций 4-х битового поля, поэтому при операциях сложения и вычитания чисел в формате 8421-BCD действуют такие правила:
- Каждый раз при сложении двоично-десятичных чисел, когда в старший полубайт происходит перенос бита, необходимо добавить корректирующее значение 0110 (= 610 = 1610 — 1010: разница количеств используемых значений и комбинаций полубайта) к тому полубайту, от которого был произведен перенос.
- Когда встречается комбинация недопустимая для полубайта то необходимо добавить с разрешением переноса в старшие полубайты к каждой недопустимой комбинации корректирующее значение 0110, каждый раз при выполнении сложения двоично-десятичных чисел.
- Для каждого полубайта, который получил заем из старшего полубайта, при вычитании двоично-десятичных чисел, необходимо провести коррекцию, для этого нужно отнять значение 0110.
Операция по сложению двоично-десятичных чисел на примере выглядит так: Задача: Определить число 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
- '*' — тетрада, из которой происходил перенос в старшую тетраду
- '**' — тетрада с являющейся запрещенной комбинацией битов