Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие

.pdf
Скачиваний:
8
Добавлен:
19.10.2023
Размер:
3.96 Mб
Скачать

8 - [ А

1 , 1 1 0 0 1 |

к о д ы ч и с е л в з а п о м и н а ю щ е м

[ Л У п ? =

0 , 0 1 101 ( с т а е

Сложение чисел и модифпциропанном обратном коде п сумматоре арифметического устройства

ид и ю

f

f/V2]0“6p = 00,01101

+ № Ъ = 11,К)011=|М 1- М К ; [iV14-/V,]np = l J01100

; > (I) - 1

^о

[^'iliip -- 1,00011 | коды чисел в запоминающем устрой- (.'V,|,ip = 1,10001 Iстае

Сложение чисел в модифицированном обратном коде в сумматоре арифметического устройства

[-У,];:бр- 11.11100

I -У' I =•• 11,01110

1Л?. 1обр-Ь ['Уг^'бр--- ] 11 , ° 1 0 1 0 = - 11.01011 — [.v, + Л ',) * 6р;

1--------1

о~ 1

моюо.

Циклический

 

 

перенос

^■> ^ = 0

 

 

 

Ю. [AMnp— 1, 100111КОд Ы чисел в запоминающем

устрой-

[ ] „ р 1,100011стве

 

 

Сложение 1чисел в модифицированном обратном коде в сумматоре арифметического устройства

[ ^ 1 ^ р = 1 ! '01100 +

1Л я ] о в р = П ' 0 1 1 Ю

[ЛМобр + 1Д2Jо б р ■110,11010 =

10,11011

> результат искажен

Jобр

 

 

I

0)

1

Циклический

перенос

->- ® =

1-v переполнение

 

Для передачи суммы при ср=0 из арифметического устрой­ ства для запоминания в кодовые шины числа поступает пря­ мой код результата независимо от знака. Если сумма положи­ тельная (сигнал со = 0), то полученное значение результата со­ ответствует его прямому коду, и преобразование выполнять не надо. При со = 1 необходимо сформировать в АУ из модифици-

рованного дополнительного пли обратного кода суммы прямой код, и уже затем отослать результат в запоминающее устрой­ ство.

Вычитание в машинах с фиксированной запятой

При выполнении операции вычитания необходимость преоб­ разования прямого кода уменьшаемого определяется тем зна­ ком, с которым первое число поступает из запоминающего устройства. Знак же у второго числа необходимо предвари­ тельно изменить. Для этого следует предусмотреть установку знаковой ячейки АУ в положение «1» перед подачей вычитае­ мого на суматор. Тогда, если код знака второго числа 0, на знаковой ячейке, выполняющей суммирование по модулю два (например, триггер со счетным входом), останется код 1, при подаче кода знака 1 установится положение «О». В результате получается 0 © 1= 1 или 1© 1=0 (символ © означает сло­ жение по модулю два, при котором единица переноса теряет­ ся). Таким образом обеспечивается изменение знака вычитае­ мого. В соответствии с этим формируется в АУ дополнитель­ ный или обратный код второго числа либо вычитаемое остает­ ся в прямом коде. И уже затем второе число поступает на сум­ матор. В остальном же эта операция ничем не отличается от

сложения, поскольку вычитание Ni—N2 можно

реализовать

как суммирование Л 0+ (—N2). В конце операции

вычитания

анализируется значение сигналов <р и со, сформированных в за­ висимости от состояния знаковых разрядов результата в сум­ маторе.

Примеры на выполнение операции вычитания

[A;i]np = 0,00101 (коды чисел в запоминающем устрой-

[ /V ,] np = 0 , 0 0 0 1 1 1'с т в е

Изменение знака вычитаемого в знаковой ячейке, предвари­ тельно установленной в 1, перед подачей N2 на сумматор

/ <3 О =/.-

Вычитание чисел в модифицированном дополнительном коде

W o n = 0 0 ,0 0 1 0 1

 

 

 

[ Л Ц " , „ =

1 1 , 1 1 1 0 1

+

____________________________

[л'.1доп+ [^ ]д „п =

100,00010 +

00,00010 = М - Л А ] “р

Нс учнтыоается

 

__- *со =

0

 

 

 

 

 

 

• е? =

0

31

Вычитание чисел d модифицированном обратном коде

[ ^ ,1^ =

00,00101 ,

 

[•^[рбр =

1Ь 11ЮР

 

т * 06Р 1- [лм;'бР= ? 00'00001 -

00,00010=--- I Л\ — /Val“p.

 

I

f

Jj > о>=0

 

Цпкличсс кин

перенос

I >? = о

 

2- [A^lup = 0,01011 1КОдЫ чисел в запоминающем устрой- [/V2]np -- 0,10 11 (стве

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед подачей N2 на сумматор

1 ® О = / .

Вычитанне чисел в модифицированном дополнительном коде

[Л''.1л..п = 00.01011_1_

 

 

 

[В Д 0П=

11,01001 '

 

 

 

lAMVon -Ь [-V2l-0„= 11лоюо =: [yVl— TV2j-on;

[А', —Л'2]пр

,01100.

J

,

1 -

>

О

)

 

э ~

о

 

 

 

Вычитание чисел в модифицированном обратном коде

Р= оо-ою) i +

I АА]рбр = 11,01000 __

М ] “6р+ W 6 P = Ч-ЮОП - [ Л ^ - Л ^ бр; [Л '-Л 0]пр= 1,01100

а) = 1

[ са — 0

3- [А')]пр = 1,0011 1 |коды чисел в запоминающем устрой-

1;\/,]пр = 0,00010 /стве

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед передачей Nz на сумматор

у

Вычитание чисел в модифицированном дополнительном коде

а д оп- 1М 1001

 

 

 

„ =

11,11110 '

 

 

 

+

=

111,10111 = 11,10111 =--

1-4--А'з|—

 

Не

учитывается

 

I

 

_[-> 0)= 1

[/V,--yV2|np—1,01001

 

 

 

 

 

 

 

 

I _> го = 0

 

 

 

 

 

Вычитание чисел в модифицированном обратном коде

 

 

 

w t o p

=

11. 11000^

 

 

 

 

 

 

[А^аЦ'бр =

11,11101

 

 

 

 

р

+

р

=

ш >Ю101 -

11,10110 •= f-V,

- д / 21

 

 

 

 

 

 

I_______

?

Ц в = 1

[ W

- z V ^ l ,01001

 

 

 

 

 

 

Циклический

^

 

 

перенос

4- [A^Jnp -- 0,01101 | коды чисел в запоминающем устрой- [AOlnp ~ 1,00110 { стве

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед передачей N2 на сумматор

У О 1 = 0

Вычитание чисел в модифицированном дополнительном коде

[ЛМ"оп = 00,01101J

„ „ = 00,00110 '

„ + ( № , = оо,шоп =[/v,

J -> «0=0

I - <? = 0

Вычитание чисел в модифицированном обратном коде

6р= оо,о1Ю1

„ = 00,00110

[ЛМоСр + №

'обр

: 00,10011 =

[/V, — л^];,1

J^>- ш= 0

II р

 

 

 

 

 

^~> CD= о

 

3

Э. В. Сарингулян, Г. В, Смирнова

33

5- [ЛМ,ip "1,00101 |коды чисел в запоминающем устрой- [Лщ]„р = 1,01001 /стве

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед передачей N2 «а сумматор

 

 

 

 

;

/ с в 1

= о

 

 

 

Вычитание чисел в модифицированном дополнительном коде

 

[* .]? „„=

11.11011 д

 

 

__________ 1АМГоп^ 00.01001

1

 

 

1Л’.1ц,„ -о ['Vs|“on =

100,00100 =00,00100 =, |Л'

- /V2]«

 

*______ I

 

 

 

 

Нс учитынается

 

 

 

 

 

 

 

Вычитание чисел в модифицированном обратном коде

 

 

[.У,]"

 

11,11010

,

 

 

 

1

1 оор

 

 

 

 

1

 

 

-

00,01001 ^

 

 

 

-1пбр_______ _____________

 

 

[-V,Г1-

-loop

=100,00011

=00,00100 = |Л\ — iV,l“

I

»J.iop t

 

 

A

1

-Inp

 

 

 

 

 

Циклический

 

 

 

 

 

 

 

 

перенос

 

 

 

6-

[A;i]np

о, Ю111 |КодЫчисел в запоминающем

устрой-

 

[/V2|np --

1,11001

|стве

 

 

 

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед передачей N2 на сумматор

i О i — О ,

Вычитание чисел в модифицированном дополнительном коде

[ ^ ^ „ =

00,10111

,

w inn =

00.11001

1

t'VJion “1 |,V.,]“ in =

01,10000

результат искажен

 

J_-> ш = 0

 

 

ср— 1 -> переполнение

34

Вычитание чисел в модифицированном обратном коде

„ = 00,10111

___________№ „ = 00,11001

№ P + № p = °UOOOO результат искажен

Jr» ш= О

^-» © = 1 -> переполнение

7- [^llnp = 1,11001 1коды чисел в запоминающем устрой- [Д’2]пр = 0,10101 Jстве

Изменение знака вычитаемого в знаковой ячейке, предва­ рительно установленной в 1, перед передачей N2 на сумматор

/ 0 ( /

Вычитание чисел в модифицированном дополнительном коде

„ = 11,00111

[М,]«

= 11,01011+

I --»доп

9

[ЛМдоп + [Дз]чои = 110,10010= 10,10010 -> результат искажен

<---------------

I

!->- щ-- -

1

Не учитывается

 

^

1— переполнение

 

 

с -

Вычитание чисел в модифицированном обратном коде

№ „ = 11,00110

№ „ =

4,01010

 

 

t^ilncp + [^г1обр “

*ЮЛОООО =

10,10001

результат искажен

 

^ ^

^

1

 

Циклический

‘-р ’

 

перенос

<р= 1 -> переполнение

Есл1И после выполнения операции вычитания ср=0, резуль­ тат может быть передан в запоминающее устройство, предва­ рительно преобразованный в прямой код при со=1 При ср=1 формируется команда о переполнении разрядной сетки.

Умножение в машинах с фиксированной запятой

Обычно реализуется операция умножения над числами, представленными в прямом коде. При этом знак произведения вырабатывается в результате сложения знаков сомножите-

3 *

35

леи по модулю два (таб. 2.1). Для этой операции использует­ ся специальный узел в арифметическом устройстве (сумма­ тор знаков сомножителей, выполненный обычно в виде треггера со счетным входом).

 

Т а б л н ц а 2.1

Правила знаков

Правила цифровых

ал го бpi.i

знаков

(+ ) X (i ) - ( + )

0 0 =0

( г ) С (--)= ( -)

0 -1- I = 1

( )>'•(•} -(-)

1 у 0== 1

1 -1 ( - ) ( г)

1 f l = 0

Операция умножения в двоичной

системе сводится к по­

разрядному умножению множимого

последовательно на циф­

ры множителя, при этом частичное произведение либо равно множимому, если соответствующий разряд множителя 1, либо нулю, если разряд множителя 0. Для реализации алгоритма умножения в двоичной системе используются суммирующие схемы со сдвигами множимого пли сумм частичных произведе­ ний как влево, так и вправо. Умножение может начинаться как с младшего, таки со старшего разряда множителя. После ум­ ножения «-разрядных чисел получается произведение, содер­ жащее 2/1 Разрядов. Так как разрядная сетка ограничена в большинстве случаев п разрядами, то п младших разрядов произведения теряется, и результат необходимо округлить. Округление при прямых кодах сомножителей выполняется пу­ тем прибавления единицы к старшему из отбрасываемых раз­ рядов результата. Если возникает единица переноса, то она суммируется с младшим из остающихся разрядом произведе­ ния. В конце операции умножения знак произведения переда­ ется из сумматора знаков сомножителей в знаковые разряды сумматора, который выработал значение произведения. По со­ стоянию старшего знакового разряда этого сумматора опреде­ ляется значение сигнала м аналогично, как при операциях сло­ жения и вычитания. Сигнал ф при умножении чисел, по абсо­ лютному значению меньших единицы, равен нулю.

Рассмотрим одну нз схем умножения чисел в прямом ко­ де, содержащую последовательность операций суммирования п сдвигов. Операция умножения начинается с младших разря­ дов множителя (множитель сдвигается вправо). После каждо­ го такта суммирования, когда прибавляется очередное частич­ ное произведение, равное множимому или нулю, в зависимости от значения сдвинутого разряда множителя к накопленной сумме частичных произведений, вновь полученная сумма ча­ стичных произведений сдвигается вправо, а множимое в про-

об

цессе умножения остается неподвижным. В результате сдви­ гов будут потеряпы п младших разрядов произведения. Для округления произведения отводится дополнительный разряд, в котором сохраняется последний из сдвигаемых разрядов ре­ зультата для прибавления к нему единицы. Выполнение опера­ ции умножения в прямом коде рационально в том случае, когда числа хранятся в запоминающем устройстве в том же коде н произведение отсылается из сумматора для запомина­ ния в память машины.

В некоторых машинах для действий над отрицательными

•числами используется обратный или дополнительный коды. Рассмотрим схемы умножения чисел с учетом алгебраиче­

ских знаков, когда накопление сумм частичных произведений выполняется в прямом или обратном кодах.

Пример на выполнение операции умножения в прямом коде

Множимое

]Л,,]пр=- 1,10011

Передача разрядов миожи-

Множитель

[ЛД]П0

=0,01111

 

1 1 р

 

теля, начиная с младшего

Разряды

сумматора

 

 

 

Доп. разряд jr

 

 

00,00000

0

Верное

частичное

произведение

00,10011

0

Первая сумма частичных произведений X’,

00,10011

0

Сдвиг

 

 

вправо

 

 

 

00,01001

1

Второе

частичное

произведение

00,10011

0

Вторая сумма частичных произведений Х3

00,11100

1

Сдвиг Х2 вправо

 

 

 

■00,01110

0

Третье

частичное

произведение

00,10011

0

Третья сумма частичных произведений X.,

01,00001

0

Сдвиг

 

Х3 вправо

 

 

 

■00,10000

1

Четвертое частичное

произведение

00,10011

0

Четвертая сумма частичных произведе­

01,00011

1

ний

 

 

 

 

 

 

Сдвиг

 

X., вправо

 

 

 

00,10001

1

Пятое

 

частичное произведение

00,00000

0

Пятая

 

сумма частичных произведений Х5

0 0 , 1 0 0

и

1

Сдвиг

 

Х5 вправо

 

 

 

04,01000

1

Округление

 

 

 

 

 

1

 

 

 

 

 

 

 

о 0 ,0 1 0 0 1

0

Знак множимого

1

 

В сумм споре

о

множителя

©

________

 

 

 

Знак

0

>

11,010! 1 [Лд.ДХр

Знак

произведения

1

-------------------

 

 

 

 

 

 

 

~> (О

1

 

 

 

 

 

 

 

 

I-> Ч■0

 

37

Пример на выполнение операции умножения в обратном коде

Множимое

[Л', |„г>

-1,10011

Передача

разрядов множи­

К -------------------------------1

теля, начиная с младшего

(-\ Множитель

|.V3]„p

-0,01111

 

 

 

 

 

Знак произведения

 

 

Доп.

разряд

 

 

 

 

 

 

 

Разряды

сумматора

 

0 0 , 0 0 0 0 0

 

0

 

Y

Первое

частичное

произведение

 

 

 

+

 

 

 

1

в м. обр. к.

 

1 1 , 0 1 1 0 0

 

1

 

Первая сумма частичных произве­

 

 

 

 

 

дений

 

 

 

1 1 , 0 1 1 0 0

 

1

 

 

Сдвиг

 

 

 

1 1 , 1 0 1 1 0

 

0

 

 

Второе

частичное

произведение

^ 1 1 , 0 1 1 0 0

 

 

+

 

в м. обр.

к.

 

1

1

 

 

 

 

 

 

1 1 1 , 0 0 0 1 0

 

J

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

Вторая сумма частичных произве­

1

 

t

 

 

 

 

 

 

 

дений

il3

 

 

1 1 , 0 0 0 1 1

 

0

 

 

Сдвиг

 

 

-> 1 1 , 1 0 0 0 1

 

1

 

 

Третье

частичное

произведение

; 1 1 , 0 1 1 0 0

 

 

+

 

в м. обр.

к.

 

 

1

 

 

 

 

 

 

1 1 0 , 1 1 1 1 0

 

?

+

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

Третья сумма частичных произве­

 

f

 

 

дений

Т:|

 

 

1 0 , 1 1 1 1 0

 

1

 

 

Сдвиг

 

 

 

1 1 , 0 1 1 1 1

 

0

 

 

Четвертое

частичное произведе­

 

 

 

 

 

ние в м.

обр. к.

 

1 1 , 0 1 1 0 0

 

1

 

 

 

 

 

 

1 1 0 , 1 1 0 1 1

 

1 ж

 

 

 

 

 

1

 

1

1

 

Четвертая сумма частичных про­

1

 

f

 

 

 

 

 

 

 

изведений

 

1 0 , 1 1 1 0 0

 

0

 

 

Сдвиг S4

 

 

-*■ 1 1 , 0 1 1 1 0

 

0

 

о

Сдвиг ^4

 

 

->■ 1 1 , 1 0 1 1 1

 

0

4 -

Округление

 

 

1 1 , 1 1 1 1 1

 

 

 

 

 

0

+

 

 

 

 

 

1 1 1 , 1 0 1 1 0

 

0

 

 

 

 

 

 

 

 

1

+

 

 

 

 

 

 

 

А

 

 

 

 

 

 

11,10110

 

 

 

 

 

 

 

 

В сумматоре

 

 

 

11,10110=. [ЛГ,.М,]“6р

11,01001= [JVx.JVa]“p

38

При суммировании частичных произведений в обрат­ ном коде отрицательное произведение получается также в об­ ратном коде. Для округления в этом случае предварительно анализируется значение последнего дополнительного разряда. Если он равен нулю, то выполняется вычитание единицы из этого разряда, в противном случае значение произведения ос­ тается неизменным. В рассматриваемом примере при послед­ нем сдвиге дополнительный разряд принимает значение нуля. Вычитание единицы заменяется прибавлением к результату в сумматоре величины 11,111110.

Если для изображения отрицательных чисел используется дополнительный код, то умножение выполняется одним из ис­ кусственных приемов. Рассмотрим умножение в дополнитель­ ных кодах с двумя корректирующими шагами. Умножение аб­ солютных величин выполняется по схеме, начиная с младших разрядов множителя (множитель сдвигается вправо). Каждая очередная сумма частичных произведений также сдвигается вправо, причем младшие я разрядов не теряются, а запоми­ наются в регистре арифметического устройства. Таким обра­ зом, будет получено полное 2я-разрядное произведение двух я-разрядных сомножителей. В данном варианте реализации умножения множимое остается неподвижным. Знак форми­ руется в результате сложения знаковых разрядов сомножите­ лей и добавляется к окончательному значению результата. При перемножении цифровых разрядов сомножителей без уче­ та алгебраических знаков будет получен результат, который затем необходимо корректировать для образования дополни­ тельного кода величины искомого произведения. Могут встре­ титься следующие случаи:

1) Если yV, > 0 и то результат положителен и равен I Ni I|Л;2|, т. е. без дополнительной коррекции получаем абсо­ лютную величину произведения.

2)

Если /V) > 0 ,

a N2< 0,

то результат равен

 

IN, |(1 — |/V21)

= |Wj| — |JVj ||N31,

где

(1 -|Л^|) =

[Л/2]Д011.

 

Так как произведение отрицательное, то разряды результата

должны быть выражены через дополнение

до единицы,

т. е.

равны 1— |Л/-! ||N21— [-/V[ •М]ДоиДля этого

необходимо

вве­

сти коррекцию, прибавляя к результату величину 11/V,!.

3) Если Mi<0, а

0, то результат равен

 

(1 — (A g)|/V 2|==|'V2|— l/V.l |:V,|,

где ( 1- I 'V j D H Л\]доп.

Так как произведение отрицательное, то для получения величи­ ны 1— |Л/а! |/V21=: |Л/, Л^2]дОП нужно добавить коррекцию значения 1— |М, |.

39

Соседние файлы в папке книги из ГПНТБ