Файл: Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.04.2024
Просмотров: 32
Скачиваний: 0
2.4, Алгоритм’ Сложения модулей чисел
Недостатки применения алгоритмов сложения дополнительных или обратных кодов при хранении чисел в прямом коде, связанные с необходимостью в 50% случаев преобразовывать результат опе рации и первое число (табл. 3 и 4), привели к разработке алгорит ма сложения модулей чисел. В основу этого алгоритма положено обычное (школьное) правило сложения относительных чисел. При этом различаются два случая: знаки чисел одинаковые и знаки чи сел разные. В первом случае складываются модули чисел и резуль
тату приписывается знак любого числа. Во втором случае из боль шего модуля вычитается меньший и результату приписывается знак большего модуля. Так как действия производятся над абсо лютными величинами чисел — модулями, то алгоритм, основанный на этих правилах, получил название алгоритма сложения модулей чисел.
При разработке машинного алгоритма второй случай разделя ют на два и всего рассматривают три случая. Принадлежность к тому или иному случаю определяется знаками слагаемых и соотно
шением абсолютных влияний чисел и приводится в табл. 5. |
|
Получим алгоритм сложения для каждого из случаев. |
Прямой |
Случай 1. Знаки слагаемых одинаковы: ЗнА-~ ЗнВ. |
|
код суммы чисел [Р1 пР определяется алгоритмом |
|
[Р]пр=ЗнА. (|А'+ |В:). |
(2.15) |
При словесной записи этого алгоритма получим следующее правило.
П р а в и л о . Для получения прямого кода суммы двух чисел в первом случае необходимо сложить модули этих чисел и резуль тату приписать знак первого слагаемого.
Случай 2. Знаки чисел разные, модуль числа А больше модуля числа В:
ЗнА~ЗнВ и А;>|В .
В этом случае нужно было бы из большего модуля А вычесть мень ший модуль В и результату приписать знак числа с большим моду лем Зн А, т. е.
1Р]Пр“ ЗнА • {|А,-;В|}.
Однако в ЭЦМ вычитание заменяется сложением числа А с до полнением к вычитаемому.
Для правильных |
дробей дополнение |
будет .B ^ - l- B i, |
отку |
да —:В,!~;В;:1— 1, и, |
следовательно, |
|
|
I Р ] пр— З н А • {|А|+!В |л - |
1}. |
( 2. 16) |
29
Единица — это перенос из старшего числового разряда, поэто му вычитание единицы в фигурных скобках фактически не выпол няется, а отбрасывается (не учитывается) перенос из старшего числового разряда.
Таблица б
м А
случая
1 +
1 . . . .
1
2 +
1
2 , —
3 + •
В А+В Примечание
+I
1 |А1—[—1В} 1
____
t + \
1А|>;в;
+— •1
— |
— |
'| |
|
) |А|<|В: |
3 |
+ |
+ |
> |
1 |
|
|
|
|
i |
При словесной записи |
алгоритма |
(2.16) |
получим следующее |
правило.
П р а в и л о . Для получения прямого кода суммы двух чисел во втором случае необходимо к модулю числа А прибавить допол нение модуля числа В и отбросить перенос из старшего разряда; результату приписать знак числа А.
' Проиллюстрируем данное правило примером.
Пример: |
|
|
|
1) |
+ = + ■?!.• |
в = —21-> |
А + В = + — • |
' |
~ 3 2 ’ |
32 |
r tT D ^ 32 |
[A]nj,=0.11011; |
(В]пр= 1 .10101; |
:В+=0,01011;' |
|
|
:А1+:В|Д—0,11011+0,01011 =1,00110; |
||
|
{Р]пР=0,00110. |
|
|
2) А— |
в = + |
А+В— + |
|
[А]пр=1. ПОП; |
[В]Гф= 0 ,10101; [В]д=0,01011; |
||
|
А |+;Вд= 0 ,11011+0,01011 = 1,00110; |
||
|
|
[Р]„р= 1,00110. |
|
30
Случай 3. Знаки чисел разные, модуль числа А меньше модуля
числа В: |
. |
ЗнА^ЗнВ |
и 1А1 < |В|. |
По общему правилу для второго случая нужно из модуля чис ла А вычитать модуль числа В и результату приписывать знак чис ла В:
[Р]пр=ЗиВ - {IBi-iAj}.
Однако такое вычитание в ЭЦМ выполнять неудобно, так как уменьшаемым оказывается второе число и для преобразования этого числа необходим дополнительный преобразователь. Для того чтобы сохранить число А уменьшаемым, как и в предыдущих слу чаях, преобразуем выражение числовой части результата следу ющим образом:
{|В'-|А1} = ~{|А‘-!В|} = -{|А 1+!В |д-!}-1-{|А |-НВ |,}.
Полученное в правой части выражение является дополнением выражения в фигурных скобках. Следовательно,
{;В— :А|}= {|А|-НВ|д}д.
В качестве знака используем значение знака числа А, а именно ЗнР = ЗнВ —ЗнА, Таким образом, прямой код результата будет
[Р]пр=3^{|А!+1В,д| я . |
(2.17) |
При словесной записи этого алгоритма получим следующее пра вило.
П р а в и л о . Для получения прямого кода суммы двух чисел в третьем случае необходимо к модулю числа А прибавить допол нение модуля числа В, от полученного результата взять дополне ние и приписать инверсию знака числа А.
Проиллюстрируем данное правило примером.
П р и м е р : |
- |
|
|
|
А = ~ - ||; |
В = 4 - § ; |
А-гВ = + |
- | - |
|
[А]пр—1.10101: |
|В]пр=0.11011; В;д= 0,00101; |
|||
|
;А! + В г= 0 ,10101 +0,00101 =0,11010; |
|||
|
||А|+|В|д}д—0,00110; |
|
||
|
|
(Р]пр—0.00110. |
(2.16) и алгоритм |
|
Если сравнить алгоритм для второго случая |
для третьего случая (2.17), то можно увидеть, что вначале в обоих алгоритмах производятся одинаковые действия. Отличие заклю чается в образовании результата. Во втором случае сумма модуля первого слагаемого (А: и дополнения модуля второго слагаемого
31
дают- -окончательный результат, а в третьем случае для по лучения окончательного результата нужно найти дополнение ука занной суммы и в качестве знака принять инверсию знака числа А.
Рассмотрим, какой признак может быть использован для того, чтобы различить второй и третий случаи.
Очевидно, проверять соотношение модулей чисел нецелесооб разно, так как для того, чтобы установить, какой из модулей боль ше, нужно выполнить операцию вычитания. Записи алгоритмов второго (2.16) и третьего (2.17) случаев показывают, что во вто ром случае возникает перенос в старшем разряде (наличие в фор муле «-—1»), а в третьем — не возникает. Следовательно, этот пере нос можно использовать в качестве признака различия между вто рым и третьим случаями.
Если при разных знаках при сложении возникает перенос в старшем разряде, то имеет место второй случай, если не возни кает,— то третий.
Определим состав блока операции. Так же как и для предыду щих алгоритмов, в состав узлов блока операций должны входить сумматор и один или два регистра. Для определенности в дальней шем будем рассматривать блок операций с сумматором комбина ционного типа и, следовательно, с двумя регистрами. Кроме ука занных основных узлов, необходимо иметь узлы связи: регистров с числовой магистралью, регистров с сумматором, сумматора с ре гистром результата.
Приведенный состав блока операций содержит минимально не обходимое количество оборудования и может рассматриваться как один из возможных вариантов. При необходимости увеличения быстродействия или улучшения других характеристик в состав блока операций может быть введено дополнительное оборудование.
Укрупненная структурная схема блока операций приведена на рис. 15. На схеме каждый узел, в соответствии с алгоритмом, со стоит из двух частей — числовых разрядов (модули чисел) и зна ковых разрядов. Собственно операция сложения выполняется толь ко с числовыми разрядами.
Рассмотрим подробней назначение узлов блока операций и их структурные схемы. " .
Регистр (Рт1) предназначается для хранения первого слагае мого или уменьшаемого (число А) и результата операции. Посколь ку результат операции существует на выходе сумматора, только при наличии на входе кодов слагаемых, прием результата в ре гистр Рг1 должен происходить без предварительной очистки ре гистра. Следовательно, регистр Рг1 должен иметь инверсные вхо ды (информация на входы регистра подается в прямом и инверс ном виде одновременно).
Узел связи сумматора с регистром (Уз. св. См—Рг1) представ ляет собой группу логических элементов «И» по два на каждый разряд. Для передачи результата из сумматора в регистр при опе рациях сложения и вычитания на один вход элементов «И» дол-
32