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

Поделись знанием:
Перейти к: навигация, поиск

К:Википедия:Статьи без источников (тип: не указан)

Двоично-десятичный код (англ. binary-coded decimal), BCD, 8421-BCD  — форма записи рациональных чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода.

Например, десятичное число 31110 будет записано в двоичной системе счисления в двоичном коде как 1 0011 01112, а в двоично-десятичном коде как 0011 0001 0001BCD.



Описание

При помощи четырех бит можно закодировать шестнадцать цифр. Из них используются 10. Остальные 6 комбинаций в двоично-десятичном коде являются запрещенными. Таблица соответствия двоично-десятичного кода и десятичных цифр:

Двоично-десятичный код также применяется в телефонной связи. В этом случае кроме десятичных цифр кодируются символы '*' или '#' или любые другие. Для записи этих символов в двоично-десятичном коде используются запрещенные комбинации:

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

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

  • Упрощён вывод чисел на индикацию — вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры.
  • Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность.
  • Упрощены умножение и деление на 10, а также округление.

По этим причинам двоично-десятичный формат применяется в калькуляторах — калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге.

Недостатки

  • Требует больше памяти.
  • Усложнены арифметические операции. Так как в 8421-BCD используются только 10 возможных комбинаций 4-х битового поля вместо 16, существуют запрещённые комбинации битов: 1010(1010), 1011(1110), 1100(1210), 1101(1310), 1110(1410) и 1111(1510).

Поэтому, при сложении и вычитании чисел формата 8421-BCD действуют следующие правила:

  1. При сложении двоично-десятичных чисел каждый раз, когда происходит перенос бита в старший полубайт, необходимо к полубайту, от которого произошёл перенос, добавить корректирующее значение 0110 (= 610 = 1610 — 1010: разница количеств комбинаций полубайта и используемых значений).
  2. При сложении двоично-десятичных чисел каждый раз, когда встречается недопустимая для полубайта комбинация (число, большее 9), необходимо к каждой недопустимой комбинации добавить корректирующее значение 0110 с разрешением переноса в старшие полубайты.
  3. При вычитании двоично-десятичных чисел, для каждого полубайта, получившего заём из старшего полубайта, необходимо провести коррекцию, отняв значение 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

'*' — тетрада, из которой был перенос в старшую тетраду

'**' — тетрада с запрещённой комбинацией битов

В тетраду, помеченную символом *, добавляем шестёрку, так как по правилам двоичной арифметики перенос унёс с собой 16, а по правилам десятичной арифметики должен был унести 10. В тетраду, помеченную символом **, добавляем шестёрку и разрешаем распространение переноса, так как комбинация битов 1101 (что соответствует десятичному числу 13) является запрещённой.

Другие системы кодирования

В системе кодирования «2 из 5»[en] одна десятичная цифра кодируется 5 битами, из которых 2 бита установлены в 1, а 3 бита — в 0, что даёт ровно 10 комбинаций. Такая система обеспечивает лучшее обнаружение ошибок, поскольку изменение одного бита всегда даст недопустимую комбинацию; также всегда обнаруживаются однонаправленные изменения (несколько изменений 0→1 или 1→0). Кодирование «2 из 5» использовалось в компьютерах серий IBM 7070, IBM 7072 и IBM 7074; также применяется в некоторых странах для маркирования почты штрих-кодом.

Уплотнённые десятичные числа[en] позволяют разместить 3 десятичные цифры в 10 битах (210=1024 комбинации, что достаточно для 3 десятичных цифр), причём кодирование устроено так, что преобразование между 10-битным кодом и тремя отдельными десятичными цифрами можно осуществить с помощью простой и быстрой логической схемы. Такое кодирование используется в десятичных числах с плавающей запятой, описанных в стандарте IEEE 754-2008.

См. также

Напишите отзыв о статье "Двоично-десятичный код"

Отрывок, характеризующий Двоично-десятичный код

Возвратившись со смотра, Кутузов, сопутствуемый австрийским генералом, прошел в свой кабинет и, кликнув адъютанта, приказал подать себе некоторые бумаги, относившиеся до состояния приходивших войск, и письма, полученные от эрцгерцога Фердинанда, начальствовавшего передовою армией. Князь Андрей Болконский с требуемыми бумагами вошел в кабинет главнокомандующего. Перед разложенным на столе планом сидели Кутузов и австрийский член гофкригсрата.
– А… – сказал Кутузов, оглядываясь на Болконского, как будто этим словом приглашая адъютанта подождать, и продолжал по французски начатый разговор.
– Я только говорю одно, генерал, – говорил Кутузов с приятным изяществом выражений и интонации, заставлявшим вслушиваться в каждое неторопливо сказанное слово. Видно было, что Кутузов и сам с удовольствием слушал себя. – Я только одно говорю, генерал, что ежели бы дело зависело от моего личного желания, то воля его величества императора Франца давно была бы исполнена. Я давно уже присоединился бы к эрцгерцогу. И верьте моей чести, что для меня лично передать высшее начальство армией более меня сведущему и искусному генералу, какими так обильна Австрия, и сложить с себя всю эту тяжкую ответственность для меня лично было бы отрадой. Но обстоятельства бывают сильнее нас, генерал.
И Кутузов улыбнулся с таким выражением, как будто он говорил: «Вы имеете полное право не верить мне, и даже мне совершенно всё равно, верите ли вы мне или нет, но вы не имеете повода сказать мне это. И в этом то всё дело».
Австрийский генерал имел недовольный вид, но не мог не в том же тоне отвечать Кутузову.
– Напротив, – сказал он ворчливым и сердитым тоном, так противоречившим лестному значению произносимых слов, – напротив, участие вашего превосходительства в общем деле высоко ценится его величеством; но мы полагаем, что настоящее замедление лишает славные русские войска и их главнокомандующих тех лавров, которые они привыкли пожинать в битвах, – закончил он видимо приготовленную фразу.
Кутузов поклонился, не изменяя улыбки.
– А я так убежден и, основываясь на последнем письме, которым почтил меня его высочество эрцгерцог Фердинанд, предполагаю, что австрийские войска, под начальством столь искусного помощника, каков генерал Мак, теперь уже одержали решительную победу и не нуждаются более в нашей помощи, – сказал Кутузов.
Генерал нахмурился. Хотя и не было положительных известий о поражении австрийцев, но было слишком много обстоятельств, подтверждавших общие невыгодные слухи; и потому предположение Кутузова о победе австрийцев было весьма похоже на насмешку. Но Кутузов кротко улыбался, всё с тем же выражением, которое говорило, что он имеет право предполагать это. Действительно, последнее письмо, полученное им из армии Мака, извещало его о победе и о самом выгодном стратегическом положении армии.
– Дай ка сюда это письмо, – сказал Кутузов, обращаясь к князю Андрею. – Вот изволите видеть. – И Кутузов, с насмешливою улыбкой на концах губ, прочел по немецки австрийскому генералу следующее место из письма эрцгерцога Фердинанда: «Wir haben vollkommen zusammengehaltene Krafte, nahe an 70 000 Mann, um den Feind, wenn er den Lech passirte, angreifen und schlagen zu konnen. Wir konnen, da wir Meister von Ulm sind, den Vortheil, auch von beiden Uferien der Donau Meister zu bleiben, nicht verlieren; mithin auch jeden Augenblick, wenn der Feind den Lech nicht passirte, die Donau ubersetzen, uns auf seine Communikations Linie werfen, die Donau unterhalb repassiren und dem Feinde, wenn er sich gegen unsere treue Allirte mit ganzer Macht wenden wollte, seine Absicht alabald vereitelien. Wir werden auf solche Weise den Zeitpunkt, wo die Kaiserlich Ruseische Armee ausgerustet sein wird, muthig entgegenharren, und sodann leicht gemeinschaftlich die Moglichkeit finden, dem Feinde das Schicksal zuzubereiten, so er verdient». [Мы имеем вполне сосредоточенные силы, около 70 000 человек, так что мы можем атаковать и разбить неприятеля в случае переправы его через Лех. Так как мы уже владеем Ульмом, то мы можем удерживать за собою выгоду командования обоими берегами Дуная, стало быть, ежеминутно, в случае если неприятель не перейдет через Лех, переправиться через Дунай, броситься на его коммуникационную линию, ниже перейти обратно Дунай и неприятелю, если он вздумает обратить всю свою силу на наших верных союзников, не дать исполнить его намерение. Таким образом мы будем бодро ожидать времени, когда императорская российская армия совсем изготовится, и затем вместе легко найдем возможность уготовить неприятелю участь, коей он заслуживает».]
Кутузов тяжело вздохнул, окончив этот период, и внимательно и ласково посмотрел на члена гофкригсрата.
– Но вы знаете, ваше превосходительство, мудрое правило, предписывающее предполагать худшее, – сказал австрийский генерал, видимо желая покончить с шутками и приступить к делу.
Он невольно оглянулся на адъютанта.
– Извините, генерал, – перебил его Кутузов и тоже поворотился к князю Андрею. – Вот что, мой любезный, возьми ты все донесения от наших лазутчиков у Козловского. Вот два письма от графа Ностица, вот письмо от его высочества эрцгерцога Фердинанда, вот еще, – сказал он, подавая ему несколько бумаг. – И из всего этого чистенько, на французском языке, составь mеmorandum, записочку, для видимости всех тех известий, которые мы о действиях австрийской армии имели. Ну, так то, и представь его превосходительству.