Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с. работа - Логика.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

Глава 6

ДВОИЧНО-ДЕСЯТИЧНАЯ АРИФМЕТИКА

6.1. Сложение в прямых д-кодах

В двоично-кодированном представлении десятичного числа каж­дая десятичная цифра изображается тетрадой двоичных символов аi = а4i а3 i a2 i a1 i, где аi — десятичная цифра i-го- разряда; аji — двоич­ная цифра i-й тетрады. Полученный таким образом десятичный код, кодированный двоичными символами, для краткости называют Д-кодом.

Имеется некоторое множество Д-кодов. Оно обусловливается на­личием всего 10 разрешенных из 16 возможных комбинаций, которые допускает тетрада. Наличие запрещенных комбинаций в Д-кодах отличает их от обычных позиционных систем счисления, в которых все комбинации — разрешенные. Из всего множества известных Д-кодов наибольшее распространение в вычислительной технике по­лучили код Д1 прямого замощения (система 8421) и код Д2 с избытком 3 (система 8421 + 3).

Из-за запрещенных комбинаций, при сложении чисел в любом из Д-кодов возникают необходимость в коррекции результата и трудности в формировании десятичного переноса в следующую тетраду. Особен­ности сложения чисел в каждом из Д-кодов различны, поэтому рас­смотрим их раздельно. При этом будем считать, что заданы числа А = ап ап-1...а1 а0 и В = bп bп-1...b1 b0 , где аi ,bi - двоично-коди­рованные десятичные цифры (тетрады).

Необходимо получить: А + В = С = сп сп-1...с1 с0, причем

сi = аi + bi + Пi-1 - Пi р; сn+1 = Пn ,

где Пi = {0, 1}, Пi-1 = {0, 1} —десятичные переносы; р = 10 — основание системы счисления.

Так как наибольшее десятичное одноразрядное число равно 9, то с учетом переноса в данный разряд, значение результата разряд­ного суммирования лежит в пределах от 0 до 19. При этом единица во втором разряде представляет собой десятичный перенос в следую­щую тетраду, а сумма получается в двоичном коде, отличном от тре­буемого двоично-десятичного представления, т. е. она требует коррек­ции.

Код Д1.

При сложении чисел в коде Д1 могут возникнуть следующие случаи:

1. Если аi + bi + П n-1< 10, то при выполнении действий над разрядами тетрады по правилам двоичной арифметики сразу получае­тся правильный результат.

2. Если аi + bi + Пn-1 ≥ 10, то возникает десятичный перенос. Поэтому сумма в данной тетраде должна быть равна:

аi + bi + Пi-1 - Пi • 10,

где Пi = 1.

При этом признаком неправильного результата является в одном случае возникновение потетрадного переноса Пi ‘= 16, во втором - появление запрещенной комбинации, если 15 аi + bi + Пi-1 ≥10. В любом из этих случаев необходимо скорректировать результат в данной тетраде введением поправки +0110, что приведет к возник­новению потетрадного переноса и во втором случае. Коррекция об­условлена тем, что каждый перенос уносит с собой из данной те­трады 16 единиц, а приносит в следующую только 10 единиц.

Пример. Сложить тетрады аi = 1000 и bi = 1001 при П i-1 = 1.

сi = аi + bi + Пi-1 = 10010.

Так как Пi = 1, требуется коррекция результата

сi = 0010 + 0110= 1000; Пi = Пi = 1

Пример. Сложить аi = 1000 и bi = 0110 при П i-1 = 1

сi = аi + bi + Пi-1 = 1111.

Так как величина сi= 1111 принадлежит к запрещенным комбинациям, то не­обходимо ввести поправку вида 0110:

сi = 1111 +0110= 10101, т. е. Пi = 1, сi = 0101.

Таким образом, если в i-и тетраде сумма цифр с переносом из (i — 1)-й тетрады меньше 10, то сложение производится без поправок; если же сумма цифр с переносом равна или больше 10, то происходит коррекция результата тетрады введением поправки +0110, а возни­кающий при этом перенос прибавляется к содержимому (i + 1)-й тетрады.

При этом, если в нескольких тетрадах, начиная с (i + 1)-й, раз­рядная сумма равна 1001, то перенос приведет к формированию за­прещенной комбинации в (i + 1)-й тетраде. В результате этого потре­буется коррекция, которая приведет к запрещенной комбинации в (i + 2)-й тетраде и т. д. Следовательно, из-за последовательного рас­пространения потетрадных переносов время сложения в коде Д1 со­ставит в худшем случае п тактов, где п — количество тетрад. Обычно схемы строят таким образом, чтобы перенос, возникающий при при­бавлении тетрадной поправки, проходил сквозь тетрады, в которых предварительная сумма равна 910 = 10012 и сбрасывал их в 0. При этом сумма всегда формируется за два такта.

Пример. Сложить числа

A=24810 =0010 0100 1000 и B=34910 = 0011 0100 1001

0010 0100 1000

+

0011 0100 1001

0101 1001 0001

+

0110

0101 1001 0111 : 59710 = 24810 + 34810

Стрелкой показаны единицы потетрадных переносов.

Код Д2

При сложении чисел в коде Д2 возможны следующие случаи с учетом того, что аi‘=аi + 3;

bi‘ = bi +3, где аiи bi‘ — тетрады для кода Д2.

Если аi‘+ bi + Пi-1 ≤ 15, то Сi = i + bi + Пi-1 + 3) + 3 = Сi+6 = Сi‘+ 3,

т.е. результат необходимо скорректировать на величину (—0011). Если же аi + bi + Пi-1 > 15, то

Сi = i + bi + Пi-1 + 6) + 10 - 16 = Сi‘ - 3. Здесь возникает десятичный перенос, кото­рый при переходе в старшую тетраду меняет свой вес с 16 на 10. По­этому в этом случае требуется поправка результата на величину +0011.

Сумматоры не производят операцию вычитания, поэтому поправ­ка (—310) = (—0011)2 осуществляется прибавлением в данную тетра­ду числа (13)10 = (1101)2 и блокированием возникающего при этом переноса из данной тетрады в старшую, который имеет значение (16)10 = (10000)2:

(-3= +13 - 16)10 или (-0011= + 1101 — 10000)2.

Пример. Заданы в коде Д2 А = 46= 0111 1001; В = 37= ОНО 1010.

Найдем сумму

0111 1001

+

0110 1010

1110 0011

+

1101 0011

1 1011 0110 = 83

> не реализуется.

При сложении в коде Д2 не возникает проблемы сквозного пере­носа и операция сложения выполняется в два такта. Это объясняется тем, что если в нескольких тетрадах сумма до прибавления поправки равна 910 = 11112, то при поступлении переноса из (i - 1)-й тетрады в i -ю, ее содержимое сбросится в 0 и перенос пойдет в ( i + 1)-ю тет­раду в этом же такте суммирования. В 1-ю же тетраду во втором такте суммирования будет прибавлена поправка +0011. Поэтому коррек­ция результата осуществляется потетрадно с блокировкой цепей потетрадных переносов. Таким образом, в коде Д2 всегда производится коррекция промежуточного результата, полученного путем сложения цифр слагаемых по правилам двоичной арифметики. При этом, если при сложении 1-х тетрад не возникает переноса, т. е. Пi = 0, то по­правка равна — 0111. Если же возникает потетрадный перенос Пi = 1, то поправка в i -й тетраде равна +0011.