Файл: Чеботарев Н.А. Построение схем сложения и вычитания в электронных цифровых машинах [пособие].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