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

Основы информатики_Савельев А.Я_Учебник_2001

.pdf
Скачиваний:
419
Добавлен:
16.01.2016
Размер:
4.68 Mб
Скачать

5 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