Двоично-десятичный код (англ. 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

  • '*' — тетрада, из которой происходил перенос в старшую тетраду
  • '**' — тетрада с являющейся запрещенной комбинацией битов