logo
учебное пособие по А и ЛО ВТ

Суммирование чисел с одинаковыми знаками в bcd-коде

При выполнении операций над отмеченными кодами возможны следующие особенности:

При сложении чисел в BCD-коде возможны три случая:

1) ( a + b ) ≤ 9 . В этом случае если действия выполняются по правилам двоичной арифметики, то величина получаемой суммы не превышает девяти и коррекция результата не требуется.

5 0101

+ 3 0011

8 1000

2) 10 ≤ ( a + b ) ≤ 15. Если результат сложения двух чисел попадает в данный диапазон чисел, то возможны два случая результирующей тетрады.

5 0101 9 1001

+ 6 0110 + 4 0100

11 1011 13 1101

В этом случае в тетраде накопилось более девяти единиц и должен быть выполнен десятичный перенос. Перенос единицы в старший разряд выполняется принудительно логической схемой. Условием для формирования единицы переноса является возникновение запрещенной комбинации (наличие единицы в разрядах с весом 8 и 4 или 8 и 2). Однако тетраду надо освободить от десяти избыточных единиц. Это тоже делается принудительно добавлением 0110 (шестерки), что приводит к возникновению шестнадцатеричного переноса. Этот перенос игнорируется. Схема формирования принудительного переноса приведена на рис.11.

3) ( a + b ) ≥ 16. Здесь в процессе суммирования возникает шестнадцатеричный перенос, в результате которого тетраду покидают вместе с десятком и те шесть единиц, которые принадлежат тетраде. Чтобы восстановить верное значение этой тетрады, необходимо к ней добавить 0110 (шесть).

x x x x

и

и

или

Перенос

8 1000

+ 9 1001

17 1 0001

0110 Коррекция(+6) 0111

Рис. 11. Схема определения запрещенной комбинации

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

а) потетрадный перенос в старшую тетраду;

б) запрещенная комбинация.

Устройство, которое работает по сформулированным выше правилам, называется одноразрядным двоично-десятичным сумматором (рис.12).

Пример: сложить числа А=169 и В=378 в BCD-коде

A = 169 A = 0.0001 0110 1001

+ B = 378 + B = 0.0011 0111 1000

A + B = 547 A + B = 0.0101 1110 0001

0110 0110

0.0101 0100 0111

перенос игнорируется

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4