Сложение чисел с разными знаками.
Отрицательные BCD-коды должны представляться в прямом, обратном или дополнительном кодах. Особенностью BCD-кодов является то, что инверсия тетрады означает дополнение до 15, а для соответствующей десятичной цифры до 9. Следовательно, необходимо убрать разницу. Один из приемов формирования обратного BCD-кода состоит в добавлении во все тетрады отрицательного числа 0110, затем их инверсия.
При сложении чисел с разными знаками возможны следующие случаи.
1) a - b ≥ 0
a = 7 0 . 0111 [ a ]обр
b= -31 . 1100 [ b ]обр
4 10 . 0011
1
0 . 0100
При образовании инверсии отрицательной тетрады в нее добавляются пятнадцать единиц. Эти 15 единиц находятся и в сумме. Но благодаря шестнадцатеричному переносу из тетрады уходит 16 единиц ( 15+1 - которая и восстанавливается добавлением по цепи циклического переноса ).
1) a - b < 0
a = 3 0 . 0011 [ a ]обр
b = -71 . 1000 [ b ]обр
-4 1 . 1011
0 . 0100
Здесь, как и в предыдущем примере, в тетраде суммы пятнадцать лишних единиц. Но при переходе от инверсной формы к прямой лишние единицы уничтожаются сами собой. Это то же самое, что от значащей части суммы вычесть пятнадцать: 1011 - 1111 = 0100. Рассмотрим несколько примеров.
A = 378 0. 0011 0111 1000
– B = 1691. 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
Таким образом, в тетраду производится заем, если результат:
§ положительный и из тетрады нет переноса;
§ отрицателен и из тетрады есть перенос.
Дата добавления: 2015-05-05; просмотров: 862;