
Основы информатики_Савельев А.Я_Учебник_2001
.pdf5 5 Умио-жение чисел на двоичном сумматоре обратного кода
11оследователы4ость действий, проводимых над числами, показана в таблице 5 А Ответ С =/JS = O.iOOOU И 11.
|
|
|
Т а б л и ц а 5,4 |
Сумматор |
Регистр В |
|
Примечания |
00.00000 |
00111 |
И.П. СМ := 0; Ргй := {B'J,; [РгЛ]:'\АГ.: |
|
11,01001 |
|
6 , = 1 ; |
СМ-[CMJ+ (/*];; |
11.01001 |
|
|
|
11.10100 |
-И0011 |
(СМ); [РтВ]; |
|
11.01001 |
|
Ь,=\. |
CM:-lCMl+l/(i;; |
10.11101 |
|
|
|
11.011 К) |
--> 11001 |
[СМ]; |
[РтВ] ; |
11,01001 |
|
*, = 1 ; СМ:=[СМ1 + [Л1;; |
|
10.10111 |
|
|СМ): [Ргй]; |
|
1 I01U1I |
-И1100 |
*, = 0; |
[СМ]: [РГЗ] ; |
11.111101 |
- k i l l 10 |
*1 = 0 ; [СМ]; [РгЗ]; |
|
11.11010 |
-И1111 |
|
|
00.101 1 1 |
|
C M : = [ C C N 4 I - ( ^ ) ; |
|
00,10001 |
Mill |
Конец |
1 аким образом, на сумматоре дополнительного кода в процессе пере множения машинных изображений операндов получаем одновременно зна ковую и цифровую части произведения.
S.S. Умножение чисел на двоичном сумматоре обратного кода
Рассмотрим правила умножения операндов, заданнкх в обратном коде.
Произведение обратных кодов сомножителей равно обратному коду peiy.'ihwania только в случае положительного множ^ителя.
Пусть множимое А = [А]^, а множитель В > О . Тогда
AB = [Al,0,b,b,...b„=[AUbr2^' |
+[AUb,-2-' +... + [AUb„-2-". |
По теореме о сложении обратных кодов в правой части данного урав нения получается обратный код результата.
5. Умнолсеиие чисел на двоичных сумматорах
Следовательно, умножение на сумматоре обратного кода также заклю чается в анализе разрядов множителя, и если оказывается, что очередной разряд множителя равен единице, то к содержимому сумматора добавляет ся обратный код множимого.
Пример 5.5. Умножить на сумматоре обратного кода (структурная схема взяча из при
мера 5.1) числа |
/1 = -0,100П и 5-0.11001. |
|
|
|
|
||
Р е III е гг и е |
Спачшш записываю гея машинные изображения чисел: |
|
|
||||
|
\Л\'^^ -11,01100; [SJ^ -OOJIOOl. |
|
|
|
|||
1!оследова|елы1ос1!.лейсгний, |
проводимых над числами, ггредсшвлеиа втаблине 5 5. |
|
|||||
Ответ [( 1^ - 1 i.lOOOIOOiOO ; С =/IS --0,01 П01 101 1. |
|
|
|
||||
|
|
|
|
|
Т аб л и ца |
5.5 |
|
Сумма! ор |
Регистр В |
|
|
Примечания |
|
|
|
1 и 1 III |
11001 |
И,11. СМ:=0; |
РгЛ = 1.'1Й; Pi* = |в'1,"б ^ |
|
|
||
11,01100 |
|
6, = 1 ; СМ:=|СМ) + [Лй,- |
|
|
|
||
11.01100 |
|
1<5м); |Й5); |
|
|
|
|
|
11,10110 |
->01100 |
Ь, |
= 0 ; |СМ]; |
| Р З ] ; |
|
|
|
11,1101! |
->00110 |
6, = 0 ; |СМ); |
[ S s ) ; |
|
|
|
|
11,11101 |
-•10011 |
6 j = l : СМ:=|СМ] + | Л й ; |
|
|
|
||
11,01100 |
|
|
|
|
|
|
|
11.01010 |
->1001| |
|
|
|
|
|
|
11,10101 |
-•10011 |
|CMJ; |РгЯ); |
|
|
|
|
|
11,01100 |
|
Ь, =1;СМ:=1СМ) + 1 Л й ; |
|
|
|
||
11,00010 |
01001 |
|СМ); [PrSl; |
|
|
|
|
|
|
|
|
|
|
|
||
11.10001 |
-•00100 |
|
Конец |
|
|
|
|
Пусть /4=(^Jo6 и В<0. Тогда [В]^^ = 1,Ьф2---Ь„- В соответствии с |
|||||||
(3.28) [В]„5 = 2 + В - 2 " " . Следовательно, |
B = 0,A|Aj ...А„+2""-1 , |
|
|
||||
|
AB^[A]^-0,h,h2-K+Mo6-2"' + ^- |
(5.8) |
|
||||
На основании (5.8) можно сформулировать правило: |
|
|
|
||||
Если множитель отрицательный, то произведение |
чисел на |
суммато |
|||||
ре обратного |
кода получается |
прибавлением поправок |
[А] и [Л]^^ • 2"" |
к |
|||
произведению |
обратных кодов |
сомножителей. |
|
|
|
122
5 5 Ум110.}1сение чисел на двоичном сумматоре обратного кода
Пример 5.6. Умножить на сумматоре обратного кода (используется метод 2 структурная схема из примера 5-1) числа ^ = -0.П0101 и В = -0,101000.
1' е иг е и и е . Сначала записываются машинные изображения чисел: | Л Й =11,001010; 18)^=11,010111;
ЙС =00.110101.
!1ос,1!сдоват ejii.Hoci ь денствин. проводимых над числами, показана в таблице 5.6. Опыст ,1/i = 00,10(1010
С'\ ммаюр |
i'e! ncip li |
11,111111 |
oiom |
М.ООИМ» |
|
11.(101010 |
|
11.001010 |
|
10.010101 |
|
11,00101(1 |
- » I 0 I 0 I 1 |
11,001010 |
|
10.0101(11 |
|
11,001010 |
- » I 1 0 I 0 I |
^ 1,001010 |
|
10,010101 |
|
11,001010 |
-•111010 |
11,10010! |
- • O I I I O I |
"^11,001010 |
|
10,110000 |
|
|
11.011000 |
-•001110 |
|
- • 000111 |
||
1 МОПОО |
||
|
*001 1(1101 (Ю.ЮООЮ
Т а б д и ца 5,6
Примечания
И 11 С М ; = 0 ; 1>|'Л = М й ; Prj3 = | S ' f t ; ДоОашРепие (.-ll,"^ в CM, r e . CM : = | С М | + | Л | ^ .
ft.=l;CM:=|CMl + M U ;
| C M | : [ P r i ] ;
ft, = 1 ; C M : = | C M ] + | , ' I U :
| C M | ; | Р Г Й ) ;
ft, = 1 ; С М ; = | С М ] + | Л й ;
|CM); iFTi);
6j = 0 ; |CM]; | P 3 ) ;
ftj = l ; CM:=|CM] + |/(ft:
|CM|; |Pr3);
ft, = 0 ; |CM|; |РгЯ|;
СМ=|СМ| + | л а ; Коней
Таким образом, в общем случае на сумматоре обратного кода произве дение 1ю;гучае1ся сразу со знаком и длиной в и разрядов, так как на послед нем шаге умножения прибавляются числа разных знаков, из-за чего нельзя к результату приписать так называемый «хвост», хранящийся в регистре множителя.
123
5.Ум!ю.жеи11е чисел на двоичных сумматорах
5.6.Метод сокращенного умножения
Вспециализированных машинах иногда иснольчуют мегод сокран^снного умножения, начиная со старших разрядов. Особенность этого метода состоит в том, что в произведении получается только п старших разрядов. Существуют разные пути выполнения сокращенного умноже1гия. Рассмот рим наиболее распространенные.
Внекоторых машинах реализован метод, который можно объяснить с помощью следующей схемы.
Полная схема |
|
|
|
Сокращенная схема |
||||||
А = |
О О, I |
О О I 1 |
|
|
|
|||||
В -= |
0 |
0, I |
1 0 |
0 |
1 |
|
|
|
||
л, = 1 ^ |
0 |
0 |
I |
0 |
0 |
1 I |
|
|
О О |
|
|
0 0 |
1 0 0 |
1 1 |
О |
||||||
|
|
0 |
1 |
1 |
1 0 |
0 |
|
I |
||
|
|
|
|
|||||||
А, =0 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Л, =0 |
|
|
0 |
I |
I |
0 |
0 |
|
1 0 |
|
^0 0 0 0 0 0 0
0 1 0 |
0 1 0 |
0 |
о о |
|
0 |
0 1 0 0 1 1 |
о, о 1 1 1 I о |
||
0 |
0 |
1 1 0 |
1 1 |
|
Таким образом, ^В = 0,01110- 2 ' .
Из этой схемы видно, что произведение гюлучается, если складывать только старшие два разряда от сумм, иолучениь!х на каждом ша|с умноже ния (показано справа). В этом случае достаточно иметь только н-разрядный сумматор. Однако следует учитывать, что для получения п точных знаков в произведении необходимо ввести дополнительные разряды.
В самом деле, пусть |
А |
= 0,а^а2..а^ |
и В |
= 0,h,h2 |
..•Ь„ . |
Тогда, если все А, = 1, то |
|
|
|
||
А, |
I |
C f j й Гз •• -^f, |
|
|
|
1>2 |
I |
a^a-f ...a„_i |
a„ |
|
|
*з |
1 |
a^ai |
...a,,,2 |
«„-Л |
|
*„=! |
|
"l |
^ .. |
0 , |
|
|
|
II ((язрядов |
"-разрядов |
124
5 6. Метод сокращенного умномгения
Предположим, что все разряды, стоящие справа от черты, отбрасыва ются. Если суммировать только п разрядов, то вносится погрешность, так как не учитываются переносы из отброшенных разрядов в разряды слева от вертикальной черты. Эти переносы могут распространиться на к разрядов слева от черты. Предполагается, что каждый разряд дает перенос, равный единице в каждом такте суммирования. Пусть все «, =1, Тогда количество единиц переноса из отброшенной части будет равно
и -\ |
п-2 |
п-3 |
п(п~-\) |
|
А„п. |
+ —т- |
+ —г- + •••+ |
I • |
(5-9) |
2 |
2' |
2' |
2"-' |
^ |
При д о с к п о ч н о больших значениях п (5.9) может быть записано так: |
||||
|
Д,„зх |
~ « - 2 . |
|
(5.10) |
Вдиницы переноса распространятся на х разрядов сумматора, и произ ведение будет содержать только п - х точных разрядов.
Следовшсльно, чтобы получить результат с точностью до п разрядов, необходимо выделить п + х разрядов в сумматоре. Количество дополни тельных разрядов при этом можно приближенно оценить величиной
|
|
x - I g ( » - 2 ) / I g 2 . |
|
(5.11) |
||
Ниже приведены |
результаты |
расчета по (5.11): |
|
|
||
п |
Ъ\ |
32 |
40 |
48 |
64 |
72 |
X |
4,5 |
•l/J |
5,3 |
5.5 |
6.0 |
6,2 |
5.7.Ускорение онерацнн умножения
Ипро1раммах решения различных задач операции умножения встре чаются достаючно часто. Поэтому методам выполнения умножения, его ускорению и рациональному построению множительных устройств всегда уделяется большое внимание.
По времени вьтнолттения оггерацию умножения относят к длинным операцттям. Гак, затраты времени на умножение двух чисел в прямом коде М0Ж1Ю оцеттить с;тедующей формулой (для случая последовательного ана лиза разрядов мтюжителя):
У = Ё(<с„.+ /','„). |
(5.12) |
/=! |
|
где /^j|„ - время вытюлнения сдвига числа на один разряд; /^ |
— время |
сумми1ювания на сумматоре; р, — вероятность появления единицы в раз рядах м1И1ЖИ!еля; п - количество разрядов множителя.
125
5У MHOweiiue чисел на двоичных сумматорах
Аналогичные формулы можно написать и для других методов ум ножения.
Анализируя (5.12), можно наметить следующие пути сокращения вре мени умножения: уменьшение затрат времени на сдвиг и суммирование операндов; уменьшение количества слагаемых в формуле, т. е. уменьшение разрядов множителя //. Этого можно добиться логическими или аппарат ными (схемными) средствами. В дальнейшем тексте будет обращено вни мание на логические средства.
Рассмогрим возможности изменения величин р, и /^^, .
Наиболее простой способ изменения величин р, и z^.^, — пропуск так тов суммирования в случаях, когда очередная цифра множителя равна ну лю. Э ш г способ может бьпь применен для систем счисления, содержащих нуль как одну из цифр, например, для систем (О, I), (О, I, Т) и т. п. Исюпочением в эгом отношении являются симметричные системы ( I , 1 ) и им 1Юдобпые. Однако от системы ( I , I ) можно осуи(ествить переход к cncieMe (0. I) HJUf (О, 1, Т ) , используя соотношения
П Т Т . . . Т - 0 0 0 . . . 1 . |
(5,13) |
Такая возможность часто имеется независимо от длины последова |
|
тельностей нулей или единиц. Для ускорения операции умножения |
можно |
исгюльзовать также наличие последователыюстей О или I (или Т) . Напри мер, последовательность вида 0100.. О дает возможность сразу осущесг-
к
вить сдвиг на к разрядов, не проводя операции, а последовательность вида
. . . 0 1 1 . . . ! переходом к избыточной системе (О, I, Т ) может быть заменена
к
на последовательность вида ...fOO... 1 , что также приводит к уменьшению
к
количества операций сложений.
1акнм образом, переход от одной разновидности двоичной системы счисления к другой при преобразовании множителя позволяет получить выигрыш во времени выполнения операции в целом.
При этом возникают определенной длины последовательности нулей или единиц, что приводит к необходимости одновременного анализа не скольких разрядов множителя и сдвигу на произвольное MHCJVO разрядов.
Рассмотрим простую иллюстрацию этого тюложения. Пусть множитель S = 0,011110001 HOI 11000 необходимо преобразовать таким образом, что-
126
5. 7 Ускорение операции умножения
бы получить меньшее количество единиц вето изображении. Если предста вить этот множитель в системе счисления (О, 1, Т ), то получим наименьшее число единиц в его изображении: В = 0,1000Т00100Т ЮОТООО (содержит только шесть единиц вместо десяти). Проведя замену 11 на О 1 , получим окончательно В = 0,1000Т001000ТООТООО.
Чтобы оценить относительную эффективность того или иного логиче скою меюда ускорения умножения, можно воспользоваться формулой
Ё('сл.+/','с„) |
|
|
о = ^г' |
, |
(5.И) |
Z ('с. +/'.'„) |
|
|
где /;; число шагов tipn выполнении операций yмнoжe^жя ускоренным мего/1ом (количество ipynn для анализа); /;,, р^ —- вероятности появле ния в anajHnnpycMOH /-и илиу-й группе разрядов; о —коэффициент эф фективности.
l:'cjHi а < 1 . 10 применяемый метод дает эффект; если же о > I — эф фекта не будет.
Группировка разрядов множителя и анализ этих групп позволяют иред1тожп11> несколько мсюдов ускорения операции умножения.
Анализ двух разрядов множителя одновременно. На основании вышензложетиюю можно составить следующие правила преобразования раз рядов множителя: В == О, /),, /т^ ..,6„.
Разбттенис множителя на грут1пы длиной к разрядов означает переход к новой СИС1СМС счисления с основанием g = 2*. Если при этом удается сокра1игь количество элементарных действий, выполняемых при операции умножения (сложений и сдвигов), то операция умножения ускоряется. Рассмогрим метол "а примере одновременного анализа двух разрядов множиlejrfl. начиная с младших разрядов.
()с1товой для правил преобразования разрядов множителя служат слелуюптие соображения.
Комбинаттии вида 00 и 01 не преобразуются. Комбинация вида 10 означаег, что необходим Т1редварительно сдвиг множимого влево, сложение и затем сдвиг содержимого сумматора вправо на два разряда. Комбинация вида II замет(яегся па комбинацию вида 101, что означает запоминание единицы для следующей анализируемой нары цифр множимого и вычита ние па данном таге с последующим сдвигом на два разряда.
127
5\ .ичо.мсение чисел на двоичных сумматорах
Втаблице 5.7 представлены правила преобразования множителя для системы (0. I. Т ).
|
|
|
|
Т а б л и ц а 5.7 |
|
Анализируемая |
1 iepeimc из |
Преобразованная |
|
|
|
пара разрядов |
предыдущей |
пара разрядов |
Примечание |
|
|
А,.,*, |
пары разрядов |
А;.1*,' |
|
|
|
|
|
|
|
||
00 |
0 |
00 |
|
|
|
01 |
0 |
01 |
|
|
|
10 |
0 |
10 |
|
|
|
И |
0 |
01 |
Прелвартсльиый ciuiHi |
лтпжимою |
|
00 |
|
01 |
Запомииаегся |
едипипа |
для следу ю- |
|
ruefi пары разрядов |
|
|||
|
|
|
|
||
01 |
1 |
10 |
|
|
|
10 |
1 |
оТ |
Предвари!ельпый сднт |
множимо! о |
|
|
|
|
|||
I I |
' |
00 |
Заиомииаегея |
единица |
для следую |
щей пары разрядов |
|
||||
|
|
|
|||
|
|
|
|
В результате преобразования множителя меняегся характер денег вин, которые должны выполняться при операции умножения, т. е. имеют место операции сложения и вычитания. Следовательно, такой способ умножения может быть реализован только на сумматорах oбpaт^югo или дополнитель ного кода. Основной выигрыш во времени получается за счет TOI о. что на каждом шаге умножения проводится либо сложение, либо вычитание мно жимого и сдвиг на два разряда одновременно. Особенность — ;шнолнительный сдвиг множимого в противоположную сторону в двух случаях т восьми и запоминание единицы для передачи в следующую пару разрядов множителя. Естественно, это потребует усложнения устройства мерного управления умножением.
Пример 5.7. Умножить два числа с одноврем'^нным анализом двух разрядов мпожн1еля. начиная с младших разрядов па сумматоре дополнительного кода; /(=0 . 10011001 . В = 0.10П0110.
PeiueHHe. При умножении чисел потребуются следующие значения: [/!]" =00.10011001 :
[А\^ = 11.01100111; 1^1," =01.00110010-
Ирсобра^уем мпожи1ель всоо1вс!СГВин с irpaBHjraMи таблицы 5,7. [В]„ =01.0ТОТ0110,
128
5.7 Ускорение операции умнож-ения
Всумматоре выполняются следующие действия
00,00000000
01,00110010
01,00110010
00.0100110010
00.1001 1001
00,11100101 10
00,001110010110
11.011001 I I
11,101000000110
11,11101000000110
11,01100111
11,0100111 НИХ)! 10
11,1101001111000110
00,10011001
00,0110110011000110
анализ 1-й пары — 10:
C M : = | C M ] + [5j;;
сдвиг на 2 разряда; анализ 2-й пары — 01;
C M : . | C M | + | / l j ; ,
сдвиг на 2 разряда; анализ 3-й нары — 0 1 :
CM:=lCMJ-bl5j;
сдвиг на 2 разряда; анализ 4-й пары — оТ : CM?=lCMJ + [!5j;
сдвиг на 2 разряда; анализ 5-й нары — 0 1 :
C M ; = l C M J + | 5 j ; ; Конем.
Отпет ( = 0 , 0 1 101 1001 10001 10
Как видно из примера 5,7, количество шагов при умножении на едини цу иревьниает количество пар разрядов в цифровой части множителя, так как предусматривается возможность появления 1 в знаковой части,
11ри одновременном анализе двух разрядов, начиная со старших, пра вила преобразования существенно изменяются. Прежде всего на характер действий влияет значение соседнего справа разряда по отношению к анализир>емой царе разрядов. Если его содержимое равно нулю, комбинации вида 00 м 01 выполняются, как в предыдущем случае. Комбинация вида 10 заменяется равнозначной ей комбинацией вида П О , что означает предва рительный сдвиг множимого и вычитание его. Комбинация вида 11 заменя ется комбинацией вида 1 0 1 , что означает вычитание множимого на данном шаге, В случае, если значение соседнего справа разряда равно единице, нронсходн! изменение преобразуемых состояний и выполнение действий в соответствии с таблицей 5,8,
При этом анализ надо начинать с пустой пары.
129
|
5 |
Умнож'еиие чисел на двоичных сумматорах |
|
|
|||
|
|
|
|
|
1' а б л и U а 5.S |
||
Анализируемая |
Соседний |
Преобразованная |
|
|
|||
пара разрядов |
справа разряд |
пара разрядов |
Примечание |
|
|||
ft,A,„ |
|
*,.. |
|
i>;i>;.< |
|
|
|
00 |
|
0 |
|
00 |
|
|
|
01 |
|
0 |
|
01 |
|
|
|
|
|
|
|
То |
Предварительный |
сдвиг |
мно |
|
|
|
|
жимого |
|
|
|
М |
|
0 |
|
оТ |
11редваригел!.и1.и1 |
слви! |
мно |
«0 |
|
1 |
|
01 |
|||
|
|
жимо! 0 |
|
|
|||
|
|
1 |
|
|
|
|
|
01 |
|
|
10 |
|
|
|
|
10 |
|
1 |
|
оТ |
|
|
|
11 |
|
1 |
|
00 |
|
|
|
Пример 5.8. Умножи!ь два числа на сумматоре обратного кода с одновременным |
|||||||
анализом двух ратрядов |
множителя, |
начиная со |
ciapuiHx разрядов: /( = 0.10010001; |
||||
й = 0,10011101. |
|
|
|
|
|
|
|
P e u i е н ие , При умножении потребуются следующие величины: |
|
|
|||||
\А]"^ =00.10010001. М | ^ =01,00100010. [ ^ ] ^ = 11,01101 н о . M f t =10.11011101- |
|||||||
В сумматоре выполняются следующие действия: |
|
|
|
||||
|
|
|
lBj„ = oi,ToiooToi, |
|
|
||
00.000000000(Х)00000 |
Сдвиг ! -IT пары — О!; |
|
|
||||
|
|
|
|
|
|||
00.0000000010010001 |
|
|
|
|
|
||
00.0000000010010001 |
|
|
|
|
|
||
00,0000001001000100 |
сдвиг на 2 разряда; |
|
|
|
|||
11.1111111011011101 |
|
анализ 2-й пары — Т о ; |
|
|
|||
00,0000000100100010 |
|
|
|
|
|
||
ОО 0000010010001000 |
сдвиг на 2 разряда; |
|
|
|
|||
OQOOOOOOOIOOIOOOIO |
анализ 3-й нары — 10; |
|
|
||||
|
|
|
|
|
|||
ОО 0000010110101010 |
|
|
|
|
|
||
ОО 0001011010101000 |
сдвиг на 2 разряда; |
|
|
|
|||
I 1 . I 1 1 I 1 1 I 1 0 I I 0 1 I I 0 |
|
анализ 4-й нары — |
оТ ; |
|
|
||
00,0001011000010111 |
|
|
|
|
|
||
00,0101100001011100 |
сдвиг на 2 разряда; |
|
|
|
|||
OQOOOOOOOOIOOIOOOI |
анализ 5-й пары — 01; |
|
|
||||
|
|
|
|
|
|||
00.0101100011101101 |
|
|
|
|
|
Ответ С = 00.0101100011101101.
130