книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие
.pdf8 - [ А |
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[ •М]ДоиДля этого |
необходимо |
вве |
|
сти коррекцию, прибавляя к результату величину 1— 1/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