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

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

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

Пример 8. Найти —t/Г для чисел

95

[х]м = = 00,001011111= + — ;

1 V

512

243

[«/]"„ = 11,011110011

512'

Используя при суммировании модифицированный дополнитель­ ный код,

iM

 

95

К о П= 00*00101 И и

512

у]м

=00,011110011

243

512

доп

*

IX—

= 00,101010010 =

1169

256'

 

 

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

169

[ * - < п = [ * - 0 ] п р = (Ю *1 0 1 0 1 0 0 1 = + 256'

Пример 9. Найти — для чисел

[*]“ =11,001101011 = — -107

ПР

512

 

[у]м

= 00,100111001 = +

 

i^Jnp

 

 

512

[хГ

=

11,110010101 = — —

1

J«on

 

 

512

-у]

 

 

199

 

11,011000111 = — —

 

х/ J л

 

 

512

 

 

 

 

[х— у]

=

 

23

11,001011100 = — —

L

^J£On

 

1

mn

 

 

 

 

128

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

105

—#]“р = 11,1101001

128 '

§3. ВЫПОЛНЕНИЕ ОПЕРАЦИИ УМНОЖЕНИЯ В ЦВМ

СФИКСИРОВАННОЙ ЗАПЯТОЙ

ВЦВМ с фиксированной запятой при умножении двух чисел, представляемых в прямом коде, действия над знаковыми разрядами

идробной частью выполняются раздельно.

50

Умножение дробных частей сводится к элементарным операциям последовательных суммирований и сдвигов. Процессом суммиро­ вания управляют цифры множителя: если очередная цифра мно­ жителя изображается цифрой 1, то множимое с соответствующим весом добавляется к сумме частичных произведений; если очеред­ ная цифра множителя есть 0, суммирование не производится. Про­ цесс суммирования продолжается до тех пор, пока не будет произ­ ведено умножение на все разряды множителя.

Знак произведения получается в результате сложения по мо­ дулю два знаков сомножителей. При таком сложении перенос, если он возникает, теряется. Аналогично производится и определение знака частного при делении двух чисел (табл. 3-1).

Т а б л и ц а 3-1

Сложение знаковых разрядов

0 +

0 =

0

0 + 1

=

1

1 + 0 = 1

 

1 +

1 = 0

П равило знаков при умножении

( + ) Х ( + ) =

+

( + ) х ( - ) =

-

< — ) X ( + ) =

( — ) X ( — ) =

+

Правило знаков при делении

( +

 

) ; (

+

) =

+

(

+

 

)

: (

-

)

=

-

(

-

)

:

(

+

)

=

-

(

-

)

:

(

-

)

=

+

Существуют,

в основном, четыре варианта

умножения двух чисел;

1) умножение начинается с младших разрядов множителя, по­

сле каждого

такта суммирования сумма

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

имножитель сдвигаются вправо, множимое неподвижно;

2)умножение начинается с младших разрядов множителя, по­ сле каждого такта суммирования множимое сдвигается влево, а множитель — вправо, сумма частичных произведений неподвижна;

3)умножение начинается со старших разрядов множителя, по­

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

имножитель сдвигаются влево, множимое неподвижно;

4)умножение начинается со старших разрядов множителя, после каждого такта суммирования множимое сдвигается вправо, множитель — влево, сумма частичных произведений неподвижна.

Самым экономичным и наиболее распространенным в ЦВМ яв­ ляется вариант 1, который мы и рассмотрим подробно.

Пример 10. Найти произведение двух чисел, используя вариант

1.Исходные числа хранятся в ЗУ в прямом коде.

Множимое

[*l“p = ll,1011 = - i i .

Множитель

[г/Ш =00,1001 = +

— .

*

1

J0

4*

51

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

W P

_99

 

256

'

При умножении двух чисел в ЦВМ действия над знаками и мно­ жителями выполняются раздельно. Знак произведения находится согласно таблице 3-1

00 + 11 = 11 (+ ) X ( - ) =

Знак произведения хранится в знаковых разрядах регистра ре­ зультата.

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

I такт .

00,0000

00,1001 — множитель.

+

00,1011

Умножение на младший разряд множителя.

 

00,1011

I частичное произведение (ЧП).

 

00,01011

Сдвиг вправо на один разряд.

IIтакт . 00,01011

^00,00000 Умножение на вторую цифру множителя.

 

00,01011

II

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

 

00,001011

Сдвиг вправо на один разряд.

III такт ,

00,001011

 

 

+

00,000000

Умножение на третью цифру множителя.

 

00,001011

III

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

 

00,0001011

Сдвиг вправо на один разряд.

IV такт .

00,0001011

 

 

+

00,1011000

Умножение на четвертую цифру множителя.

 

00,1100011

IV

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

 

00,01100011

Сдвиг вправо на один разряд.

 

00,01100011

Произведение мантисс.

С учетом знака

 

 

 

 

=

11,01100011 = -----— .

 

 

пр

256

Пример 11. Найти произведение двух чисел

Множимое

м ; р= о о ,п п = - ! | .

52

Множитель

 

В Д Р = 00, П о д ­

l i

 

 

 

 

16

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

 

 

 

195

 

Ш 1пр

 

 

 

 

 

256 '

 

 

 

 

Знак произведения равен согласно табл. 3-1

00

00

00

( ; ) X

( )

I такт . 00,0000

00,1101

— множитель.

+00,1111 Умножение на младшую цифру множителя.

00,1111 I частичное произведение (ЧП).

00,01111 Сдвиг вправо на I разряд.

II

такт

00,001111

Сдвиг вправо. Суммирование не произво­

 

 

 

дится, так как

вторая цифра множителя

 

 

 

равна 0.

 

III

такт

00,001111

Умножение .на третью цифру множителя.

 

 

00,111100

 

 

01,001011

III частичное

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

 

 

00,1001011

Сдвиг вправо на I разряд.

IV такт

00,1001011

Умножение на четвертую цифру множи-

 

 

”'00,1111000

 

 

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

теля

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

 

 

01,1000011

IV частичное

 

 

00,11000011

Сдвиг вправо на I разряд.

 

 

00,11000011

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

мантисс.

 

 

 

 

195

С учетом знака произведения [хг/]“ =00,11000011 = -|----- .

 

 

 

 

256

 

Как видно из примера 11, после передачи множимого в сумматор

до сдвига частичное произведение может превышать единицу (ком­ бинация 01 в знаковых разрядах сумматора).

Время выполнения операции умножения Туы будет определяться длительностью такта суммирования т2, длительностью такта сдвига тСдв и разрядностью п.

Т ум = (хх + хсяв)п.

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

Наиболее распространенным логическим методом ускорения выполнения умножения является пропуск тактов суммирования

53

в тех случаях, ког^а очередная цифра множителя есть нуль. Если полагать, что разряды множителя не зависят один от другого и в каждом из них с равной вероятностью могут находиться как 1, так и 0, то среднее количество тактов суммирования при умноже­

нии п разрядных чисел оказывается равным — . Применение этого

метода сокращает среднее время выполнения умножения в отно­ шении

 

 

Т-СДВ

 

 

Д

 

 

сдв

Обычно т2

= 2тсдв, поэтому Д = 0,667, т. е. сокращение сред­

него времени умножения составляет 33%.

Для дальнейшего сокращения времени выполнения умножения

в варианте

1

можно в каждом такте анализировать содержимое

не одного,

а двух младших разрядов множителя. В этих разрядах

с равными вероятностями могут встретиться комбинации 00, 01, 10, 11, которые можно выразить следующим образом:

00 = 0; 01 = 2°; 10 = 21; 11 = 22 2°.

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

Если после просмотра всех разрядов множителя схема СС будет находиться в «1», то к окончательному результату необходимо при­ бавить множимое в прямом коде.

Сокращение среднего времени умножения при попарном про­ смотре цифр разрядов множителя выражается отношением

АО

1—— т ------ >

Т2 + Тсдв

при т2 ^ 2тсдв Дх = 0,583, что соответствует экономии времени на 41,7%.

Пример 12. Найти произведение двух чисел, пользуясь методом просмотра двух очередных цифр множителя.

54

Т а б л и ц а 3-2

Номера

Комбинация

цифр

Порядок выполнения элементарных операций

п. п.

1

«00»

и «0»

СС

Сдвиг вправо на

2 разряда частичного про­

2

«01»

и «0»

СС

изведения (ЧП)

 

 

 

 

 

Прибавление

множимого в

ПК

к частич­

 

 

 

 

ному произведению и сдвиг результата на

3

«10»

и «0»

СС

2 разряда

вправо

 

 

 

 

Прибавление удвоенного

множимого в ПК

 

 

 

 

к ЧП и сдвиг

результата

на

2 разряда

4

«11»

и «0»

СС

вправо

 

 

 

 

 

 

Вычитание множимого

из ЧП,

сдвиг ре­

 

 

 

 

зультата на 2 разряда вправо.

 

5

«00»

и «1»

СС

Установка в «1»

СС

 

2

со

сбросом в

Выполняется

аналогично п.

6

«01»

и «1»

СС

«0» СС

аналогично п.

3

со

сбросом

Выполняется

7

«10»

и «1»

СС

в «0» СС

 

 

 

 

 

 

Выполняется аналогично п. 4

с установки

8

«11»

и «1»

СС

Выполняется

аналогично п.

1

 

 

 

 

в «1» СС

 

 

 

 

 

 

Множимое

 

[х]"

=11,111111 = — — .

1пР

64

Множитель

 

[У]«

=00,111001 = + — .

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

 

 

3591

 

[ ^ ] “р

 

 

4096 '

Знак произведения определяется согласно таблице 3-1

 

11

+ 00 = 11 ( - ) X (+ ) = — .

I такт

00,000000

«01» и «0» СС.

+00,111111 Прибавление множимого в ПК.

00,111111 I частичное произведение.

00,00111111 Сдвиг I ЧП на 2 разряда вправо.

II такт . 00,00111111

«10» и «0» СС.

+01,11111000 Прибавление удвоенного множимого.

10,00110111 II частичное произведение.

55

00,1000110111 Сдвиг II части произведения на 2 раз­ ряда вправо.

III такт

00,1000110111

«11» и «0» СС.

11,0000010000 Дополнительный код множимого.

11,1001000111 III частичное произведение.

11,111001000111 Модифицированный сдвиг на 2 раз­ ряда вправо.

__ 11,111001000111 «1» СС.

1 00,111111000000 Прибавление множимого в ПК-

00,111000000111 Произведение мантисс.

С учетом знака

[хуГ =

11,111000000 = — — .

а ПР

4096

§ 4. ДЕЛЕНИЕ ЧИСЕЛ В ЦВМ С ФИКСИРОВАННОЙ ЗАПЯТОЙ

Деление чисел в ЦВМ сводится к выполнению последовательных вычитаний делителя у первоначально из делимого х, а затем из об­ разующихся в процессе деления частичных остатков zh и сдвига частичных остатков на один разряд влево (10 zt).

Знак частного определяется как сумма по модулю два для зна­ ков делимого и делителя согласно таблице 3-1, а модуль частного— как частное от деления модуля делимого на модуль делителя. По­ этому деление двух чисел с произвольным сочетанием знаков может быть сведено к делению двух положительных чисел, заданных

впрямом коде.

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

В дальнейшем будем считать, что

\ х \ < \ у \ .

(3.1)

При автоматическом выполнении деления делитель у вычитается из делимого х. и определяется знак остатка z ± — ху. При выпол­ нении условия (3.1) остаток zx всегда будет отрицательным, по­ этому первая старшая цифра частного равна 0. В этом случае можно идти двумя различными способами.

По первому способу возвращаемся к делимому х путем прибав­ ления делителя у к остатку zlt то есть х = z1 -'r у. Сдвигаем делимое х на один разряд влево (10 х) и вновь вычитаем делитель у. Если полученный остаток z2 = 10х—у будет положительный, то простав­ ляем в частном 1, сдвигаем частичный остаток z2 на один разряд влево (10 z2) и вновь вычитаем делитель (z3 = 10z2—у) и т. д.

56

Если же остаток z2< 0 , проставляем в частном 0, восстанавли­ ваем предыдущий частичный остаток 10* = z 2 -j- у, сдвигаем его на один разряд влево (100*) и вновь вычитаем делитель (z3100x—у) и т. д. Операции повторяются до тех пор, пока не получится частич­ ный остаток Zi ----- 0 или пока в частном не получится требуемое ко­ личество разрядов.

Метод выполнения деления, когда в случае получения отрица­ тельного остатка к нему прибавляется делитель, называется мето­ дом с восстановлением остатка.

По второму способу при получении отрицательного остатка zt последний сдвигается на один разряд влево (Юг,-), после чего дели­ тель не вычитается, а прибавляется (Юг,- + у).

Пусть

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

вен zx — *—у,

если + -<0, проставляем в частное 0, сдвигаем zx

влево на

один

разряд

-

 

10Z! = 10 (х—у),

а для нахождения следующего остатка прибавим к нему делимое у

z 2 ----- 10z, + у = 10* — 10у г у ----- Ю*—у.

Видим, что z2 представляет собой делимое *, сдвинутое на один разряд влево (10*), из которого вычитается делитель у. Происходит автоматическое восстановление остатка. Если г2<Ю, проставляем в частное 0, сдвигаем z2 опять влево (10z2) и к нему вновь прибав­ ляем у. Если z2>-0, прибавляем в частное 1, сдвигаем z2 влево и вычитаем делитель и т. д.

Описанный метод деления называется методом деления без вос­ становления остатка.

Пример 13. Разделить два числа, используя метод с восстанов­ лением остатка. Арифметические действия над дробными частями чисел производить в модифицированном дополнительном коде.

Делимое

[х]“р = 00,010010011

147

512 '

 

 

Делитель

 

 

[уГ

=11,101010000 = — — .

L^Jnp

02

Знак частного согласно таблице 3-1

равен 00+11 = 11.

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

 

00,010010011

1)

ПК делимого

Цифры частного

1 11,010110000

 

ДК делителя

 

+,

11,101000011

2)

Z !< 0

0,

00,10101

 

ПК делителя

 

 

00,010010011

Восстановленный остаток

57

,

00,100100110

Сдвиг остатка

влево

'

11,010110000

ДК делителя

 

,

11,111010110

3) z2<

0

0,0

+

00,10101

ПК делителя

 

 

00,100100110

Восстановление остатка

.

01,001001100

Сдвиг остатка влево

+

11,010110000

ДК делителя

 

 

00,011111100

4) z3>

0

0,01

,

00,111111000

Сдвиг

остатка

влево

4

11,010110000

ДК делителя

 

 

00,010101000

5) z4> 0

0,011

_j

00,101010000

Сдвиг остатка влево

г 11,010110000

ДК делителя

 

 

00,000000000

6) z5 =

0

0,0111

С учетом знака частное равно

 

 

X = 11,0111 =

----- —7 .

 

у

. лр

 

16

Пример 14. Разделить два числа методом деления без восстанов­ ления остатка. Арифметические действия над дробными частями числа производить в модифицированном дополнительном коде.

Делимое

 

 

М “р = 11,100000011 = — .

 

 

 

 

 

512

 

Делитель

 

 

 

 

 

 

[у\ы =11,111

= — — .

 

 

l^ Jnp

 

g

 

Знак частного согласно таблице равен

11 Д 1 1 -= 00. Произво-

дим деление модулей делимого и делителя

 

00,100000011

1)

ПК делимого

 

Частное

 

11,001000000

 

ДК делителя

 

 

11,101000011

2)

Zl< 0

 

0,

,

11,010000110

 

Сдвиг остатка zx влево

+

00,111000000

 

ПК делителя

 

 

00,001000110

3)

z2> 0

 

0,1

 

00,010001100

Сдвиг остатка z2 влево

 

11,001000000

ДК делителя

 

 

58

 

11,011001100

4) z3< 0

0,10

,

10,110011000

Сдвиг остатка

z3 влево

'г 00,111000000

ПК делителя

 

 

11,101011000

5) z4< 0

0,100

,

11,010110000

Сдвиг остатка

z4 влево

г 00,111000000

ПК делителя

 

 

 

 

 

А

 

00,001110000

6) 2-л> 0

0,1001

,

00,011100000

Сдвиг остатка гь влево

_г 11,001000000

ДК делителя

 

 

11,100100000

7) ze< 0

0,10010

,

11,001000000

Сдвиг остатка

z6 влево

1 00,111000000

ПК делителя

 

 

00,000000000

8) z7 = 0

0,100101

С учетом знака частное

равно

 

 

 

=

00,100101

37

 

 

62 ‘

 

 

Jn p

 

§ 5. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ В ЦВМ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

Как указывалось выше в главе второй, числа в ЦВМ с плаваю­ щей запятой могут быть нормализованными и ненормализованными.

При решении задач на ЦВМ ненормализованные числа обычно не применяются, потому что при выполнении арифметических опе­ раций над малыми ненормализованными числами они становятся машинными нулями, т. е. выходят за разрядную сетку вправо.

В нормализованных числах мантисса N 0 удовлетворяет условию

~< \ N 0\<1.

Положительные нормализованные числа должны иметь сочета­ ние 00,1 в двух знаковых разрядах числа и старшем цифровом раз­ ряде мантиссы.

Отрицательные нормализованные числа, представленные в мо­ дифицированном прямом коде, имеют сочетание 11,1. Отрицатель­ ные нормализованные числа, представленные в модифицированном дополнительном или обратном кодах, должны иметь сочетание 11,0. При выполнении арифметических действий над двумя нормализо­ ванными числами результат может быть ненормализованным чис­ лом, т. е. происходит нарушение нормализации. Невыполнение условия |iV0|< < l называется нарушением нормализации влево.

59

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