Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие АиЛОВТ.doc
Скачиваний:
107
Добавлен:
11.05.2015
Размер:
5.6 Mб
Скачать

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

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

  • наличие разрешенных и запрещенных комбинаций, свидетельствующих о правильности результата или необходимости его коррекции;

  • при сложении тетрад возможен потетрадный (16 единиц), а не поразрядный (10 единиц) перенос, что также требует корректировки результата.

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

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

5 0101

+ 30011

8 1000

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

5 0101 9 1001

+ 60110 + 40100

11 1011 13 1101

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

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

x x x x

и

и

или

Перенос

8 1000

+ 91001

17 1 0001

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

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

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

  • Если при потетрадном сложении перенос в соседнюю старшую тетраду не возникает, то результат суммирования не требует коррекции.

  • Коррекция результата потетрадного сложения путем добавления поправки 0110 требуется в случае, если возникает:

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

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

Устройство, которое работает по сформулированным выше правилам, называется одноразрядным двоично-десятичным сумматором (рис.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

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

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

Отрицательные BCD-коды должны представляться в прямом, обратном или дополнительном кодах. ОсобенностьюBCD-кодов является то, что инверсия тетрады означает дополнение до 15, а для соответствующей десятичной цифры до 9. Следовательно, необходимо убрать разницу. Один из приемов формирования обратногоBCD-кода состоит в добавлении во все тетрады отрицательного числа 0110, затем их инверсии.

При сложении чисел с разными знаками возможны следующие случаи.

1) a - b ≥ 0

a = 7 0 . 0111 [ a ]обр

b= -3 1 . 1100 [ b ]обр

4 10 . 0011

1

0 . 0100

При образовании инверсии отрицательной тетрады в нее добавляются 15 единиц. Эти 15 единиц находятся и в сумме. Но благодаря шестнадцатеричному переносу из тетрады уходит 16 единиц ( 15+1 − эта единица восстанавливается добавлением по цепи циклического переноса ).

  1. a - b < 0

a = 3 0 . 0011 [ a ]обр

b = -7 1 . 1000 [ b ]обр

-4 1 . 1011

0 . 0100

Здесь, как и в предыдущем примере, в тетраде суммы пятнадцать лишних единиц. Но при переходе от инверсной формы к прямой лишние единицы уничтожаются сами собой. Это то же самое, что от значащей части суммы вычесть пятнадцать: 1011 - 1111 = 0100. Рассмотрим несколько примеров.

A = 378 0. 0011 0111 1000

B = 169 1. 1110 1001 0110

A – B = 209 10. 0010 0000 1110

циклический перенос1

0. 0010 0000 1111

Из последней тетрады нет переноса, таким образом, это соответствует заему в нее 16 единиц (вместо необходимых 10). Следовательно, из нее необходимо удалить лишние шесть единиц. Для этого в тетраду добавляется 10 - дополнение шести до шестнадцати:

0. 0010 0000 1111

1010

0. 0010 0000 1001

+ 2 0 9

A = 169 0. 0001 0110 1001

B = 378 1. 1100 1000 0111

A–B= - 209 1. 1101 1111 0000

0110

1. 1101 1111 0110

- 0010 0000 1001

- 2 0 9

Таким образом, в тетраду производится заем, если результат:

  • положительный и из тетрады нет переноса;

  • отрицательный и из тетрады есть перенос.