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

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

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

Поскольку при арифметических действиях над двумя нормали­ зованными числами мантисса результата удовлетворяет условию

1 < |Л М < 2 ,

то признаком нарушения нормализации влево для положительных чисел является сочетание 01, для отрицательных чисел — сочета­ ние 10 в двух знаковых разрядах. Нормализация может быть вос­ становлена путем модифицированного сдвига мантиссы вместе со знаковым разрядом на один разряд вправо с одновременным при­ бавлением к порядку единицы.

Невыполнение условия

называется нарушением нормализации вправо, признаком кото­ рого является для положительных чисел сочетание 00,0; для от­ рицательных чисел, представленных в модифицированном прямом коде, сочетание П-,0; для отрицательных чисел, представленных в модифицированном обратном или дополнительном кодах—сочета­ ние 11,1 в двух знаковых разрядах числа и старшем цифровом раз­ ряде мантиссы.

Восстановление нормализации осуществляется путем повторе­ ния цикла сдвига мантиссы влево с одновременным вычитанием единицы из порядка до тех пор, пока в знаковых разрядах и стар­ шем цифровом разряде мантиссы не появятся для положительных и отрицательных чисел, представленных в модифицированном пря­ мом коде, соответственно сочетания 00,1 и 11,1; для отрицательных чисел, представленных в модифициоованном дополнительном или обратном кодах, сочетание 11,0.

§6. СЛОЖЕНИЕ И ВЫЧИТАНИЕ ЧИСЕЛ В ЦВМ

СПЛАВАЮЩЕЙ ЗАПЯТОЙ

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

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

Выравнивание порядков путем приведения числа с большим порядком к порядку второго числа выполнять нельзя, так как в этом случае необходимо сдвигать мантиссу нормализованного числа влево, что приводит к потере старших цифровых разрядов мантиссы.

60

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

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

Если разность порядков отрицательна, то в каждом цикле вы­ полняется сдвиг на один разряд вправо мантиссы первого слагае­ мого, а к разности порядков прибавляется единица до тех пор, пока разность не будет равна нулю. Затем выполняется суммирование мантисс. Результату присваивается порядок второго слагаемого.

Алгебраическое суммирование порядков, так же как и мантисс, происходит в ЦВМ в одном из модифицированных кодов, обратном или дополнительном. Однако для упрощения в приведенных ниже примерах алгебраическое суммирование порядков приведено в пря­ мом коде.

При алгебраическом суммировании мантисс в одном из модифи­

цированных кодов возможны три случая.

 

 

 

 

1.

Сложение выполняется без переполнения разрядной сетки и

нарушения нормализации.

В этом случае результат переводится из

модифицированного обратного или дополнительного кода в прямой.

Порядком результата будет общий порядок обоих слагаемых.

 

Пример 15.

 

 

 

 

 

 

 

 

 

Знак

Мантисса

Знак

Порядок

 

 

 

 

числа

порядка

 

 

Первое слагаемое

00

100001100101

00

110

= 33 —

(I)

 

 

 

 

 

 

 

64

Второе слагаемое

00

101100010000

00

011

=

5 ”

(II)

 

 

 

 

 

 

 

 

 

32

 

S

 

 

 

 

 

= 39 —

 

 

 

 

 

 

 

 

64

П е р в ы й

ш а г .

Вычитание порядков: Ар = ПО—011 =

011.

В т о р о й

ш а г .

Выравнивание порядков:

Л р > 0,

поэтому

 

 

 

нормализованная мантисса второго слагае­

 

 

 

мого сдвигается на три разряда вправо

 

 

 

(II)

00,000101100010.

 

 

 

61

Т р е т и й ш а г . Перевод обеих мантисс в модифицированный дополнительный код и сложение мантисс:

 

 

(I)

, 00,100001100101

 

 

(II)

+ 00,000101100010

 

 

 

00,100111000111

Ч е т в е р т ы й

ш а г .

Перевод результата в прямой код и

 

 

 

присвоение результату порядка пер­

 

 

 

вого слагаемого:

 

 

S == 00.100111000111.00.110.

Проверка

Z = 0,100111000111-2т1,0 =

 

 

= 100111,000111=39— .

 

 

 

64

2.

Сложение выполняется без переполнения разрядной сетки,

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

Пример 16.

 

 

 

 

 

 

Первое слагаемое (I)

00.10000001011.00.100 =

8 —

 

 

 

 

 

 

128

Второе слагаемое

(II)

11.10001111111.00.111=—71 —

 

 

 

 

 

 

16

 

2

 

 

 

= —63 —

 

 

 

 

 

 

128

П е р в ы й

ша г .

Вычитание

порядков:

Ар =

100— 111 =

= — 011.

 

 

 

 

 

 

В т о р о й

ш а г .

Выравнивание

порядков:

Д р < 0 , поэтому

 

 

нормализованная мантисса первого слагае­

 

 

мого сдвигается на три разряда

вправо

 

(II)

 

00.00010000001011.

 

 

Т р е т и й ш а г . Перевод обеих мантисс в модифицирован­ ный дополнительный код и сложение ман­ тисс:

(I),00,00010000001011

(II)+ 11,01110000001000 11,10000000010011.

Че т в е р т ы й ш а г . Перевод результата в прямой код

11,01111111101101.

П я т ы й ш а г . Нормализация результата: мантисса резуль­ тата сдвигается влево на один разряд, одно­ временно от порядка второго слагаемого вычитается единица

11, 1111111101101.

62

Порядок второго слагаемого становится 111—001 = ПО.

Ш е с т о й ш а г . Результату присваивается порядок второго слагаемого

2 = 11, 1111111101101.00,110.

Проверка: S = —0,1111111101101 ■2+110 =

= —111111,1101101 = —63 — .

128

3. При сложении происходит переполнение разрядной сетки, происходит нарушение нормализации влево.

Пример 17.

Первое слагаемое (I) 11,10101100001.00,110 = — 43 —

 

 

 

 

32

Второе слагаемое

(II) 11,11111110111.00,111= — 127 —

 

 

 

 

16

П е р в ы й

ш а г .

Вычитание

порядков:

Ар = ПО— 111 =

= — 001.

 

 

 

 

В т о р о й

ш а г .

Выравнивание

порядков:

Д р < 0 , поэтому

 

 

мантиссу первого слагаемого сдвигаем впра­

 

 

во на один разряд

 

(II)11,010101100001.

Т р е т и й ш а г . Перевод обеих мантисс в модифицирован­ ный дополнительный код и сложение ман­ тисс:

(I) , 11,101010011111 (II) + 11,000000010010

10, 101010110001.

Ч е т в е р т ы й ш а г . Исправление

денормализации

влево:

 

 

осуществляется

модифицированный

 

 

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

 

 

один разряд с одновременным увели­

 

 

чением на единицу порядка второго

 

 

слагаемого:

 

 

 

 

 

 

11,0101010110001.

 

 

 

Порядок второго

слагаемого будет

равен

 

111 + 001

= 1000.

П я т ы й

ш а г .

Перевод мантиссы результата в прямой код:

 

 

11, 1010101001111.

 

 

 

Ш е с т о й

ш а г .

Присвоение результату

порядка

второго

слагаемого:

 

 

 

 

 

 

 

2 =

11, 1010101001111.00, 1000.

 

 

 

63

Проверка.

2 = —0,1010101001111.2+1000 =

 

 

= —10101010,01111 = — 170— .

 

 

32

§ 7.

УМНОЖЕНИЕ ЧИСЕЛ В ЦВМ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

Умножение чисел в нормальной форме происходит по следую­

щему

алгоритму:

знака произведения путем сложения знаков

а)

определение

сомножителей согласно таблице 3-1;

б)

определение

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

сложения порядков сомножителей в одном из модифицированных кодов;

в) перемножение мантисс сомножителей, дающее мантиссу про­ изведения так же, как и для чисел с фиксированной запятой.

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

из которых не меньше 00,1 . . . , может оказаться

меньше 00,1,

то есть происходит нарушение нормализации вправо,

но не более,

чем на один разряд. Для исправления денормализации мантиссу произведения сдвигают влево на один разряд с одновременным уве­ личением на единицу порядка произведения.

Пример 18. Умножить два числа, пользуясь при умножении ман­ тисс сомножителей методом просмотра одной цифры множителя, начиная с младшего разряда

Знак

Мантисса

Знак

Порядок

числа

 

порядка

 

Множимое

Множитель

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

П е р в ы й ш а г .

11

11011

11 0001 = —27-2“ '

11

11001

00 1 1 1 1 ^ —25-2+

= + 6 7 5 - 2 '4

Складывая порядки сомножителей с уче­ том знаков, получим порядок произведе­ ния:

 

, 11,1111

ДК

порядка множимого

 

"'00,1111

ПК

порядка множителя

 

00,1110 ПК порядка произведения.

В т о р о й

ш а г .

Складывая

коды знаков сомножителей со­

 

 

гласно таблице 3-1, получим код знака про­

 

 

изведения:

 

 

 

 

11 + 11= 00.

Т р е т и й

ша г .

Производим

умножение мантисс:

 

 

00,11011

ПК мантиссы множимого

 

 

00,11001

Множитель

64

I такт , 00,00000

«1» — цифра множителя

+00,11011 ПК множимого

00,11011 1 частичное произведение (ЧП)

00,011011 сдвиг 1ЧП на 1 разряд вправо

IIтакт 00,011011 «0»

00,0011011 сдвиг 2ЧП на 1 разряд вправо

III такт

 

00,0011011

«0»

 

 

00,00011011

сдвиг ЗЧП на 1 разряд вправо

IV такт

,

00,00011011

«1»

 

+

00,11011000

ПК множимого

 

 

00,11110011

4ЧП

 

 

00,011110011

сдвиг 4ЧП на 1 разряд вправо

V такт

,00,011110011

«1»

 

+00,110110000

ПК множимого

 

 

01,010100011

5ЧП

00,1010100011 сдвиг 5ЧП на 1 разряд вправо

Конец циклического

процесса

00,1010100011

мантисса

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

Ч е т в е р т ы й ш а г .

Мантиссе

произведения приписываем

 

суммарный порядок сомножителей и

 

знак числа:

00,1010100011.00.1110.

Проверка. 00.1010100011.00.1110 = 00,1010100011 • 2+1110 =

= 675-2_10.2 +14 = 675-2+4-

Пример 19 (ускоренное умножение). Умножить два числа, поль­ зуясь при умножении мантисс сомножителей методом просмотра двух очередных цифр множителя, начиная с младших разрядов.

 

Знак

Мантисса

 

Порядок

 

 

числа

 

 

 

 

 

 

 

1

 

 

 

 

 

 

Множимое

00

110111011

00

1000

=

4 2 2 1 2

Множитель

00

110110010

11

0101

=

+ —

 

 

 

 

 

 

8192

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

 

 

 

 

=

+ 5 14211 .

 

 

 

 

 

 

16 384

Заказ № 2437

65

П е р в ы й ш а г . Складывая порядки сомножителей с учетом знаков, получим порядок произведения:

00,1000 ПК порядка множимого

11,1011 ДК порядка множителя

 

 

 

00,0011

ПК

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

 

 

В т о р о й

ш а г .

Складывая коды

знаков

сомножителей со­

 

 

 

 

гласно таблице 3-1, получим код знака

 

 

 

 

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

 

 

 

 

 

 

 

 

00 -I- 00 - 00.

 

 

 

 

 

Т р е т и й

ш а г .

Умножение

мантисс производим согласно

 

 

 

 

таблице

3-2

ПК

мантиссы

множимого

 

 

 

 

00,110111011

 

 

 

 

11,001000101

ДК

мантиссы

множимого

 

 

 

 

01,101110110

удвоенная

мантисса

множи­

 

Множитель

00,11

01

10 01

мого.

 

 

 

 

 

 

 

 

 

I такт

.00,000000000

 

«01» и «0» СС

 

 

 

 

 

+ 00,110111011

 

Прибавление множимого в ПК

 

 

00,110111011

 

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

 

 

00,00110111011

Сдвиг 1ЧП на 2 разряда вправо

II

такт

00,00110111011

«10» и

«0» СС

 

 

 

 

+

 

 

 

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

 

 

01,10111011000

мого

 

 

 

 

 

 

01,11110010011

 

2 ЧП

 

 

 

 

 

 

00,0111110010011

Сдвиг 2 ЧП на 2 разряда вправо

III

такт

,00,0111110010011

«01» и «0» СС

 

 

 

 

 

+ 00,1101110110000

Прибавление

множимого

в ПК

 

 

01,0101101000011

3

ЧП

 

 

 

 

 

 

00,010101101000011

сдвиг 3 ЧП на 2 разряда вправо

IV такт

, 00,010101101000011

«11»и«0»СС установки в «1» СС

 

 

11,001000101000000

ДК множимого

 

 

11,011110010000011 4 ЧП

11,11011110010000011 Модифицированный сдвиг 4 ЧП на 2 разряда вправо

Конец циклического процесса

,11,11011110010000011 «00» и «1» СС ^00,11011101100000000 ПК множимого

00,10111011110000011 Мантисса произведения.

6 6

Ч е т в е р т ы й ша г . Мантиссе

произведения приписываем

суммарный

порядок сомножителей и

знак числа

 

00.10111011110000011.00.0011.

Проверка. 00.10111011110000011.00.0011 =00.10111011110000011X

X 2 t00U = + 101,11011110000011 = + 5 - ^ ^ .

16 384

§ 8. ДЕЛЕНИЕ ЧИСЕЛ В ЦВМ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ

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

а) определение знака частного путем сложения знаков делимого и делителя согласно таблице 3-1;

б) определение порядка частного путем алгебраического вычи­ тания порядка делителя из порядка делимого;

в) деление мантиссы делимого на мантиссу делителя, что дает мантиссу частного. Эта операция производится точно так же, как и для чисел с фиксированной запятой.

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

мантисса частного удовлетворяет условию

Y < |iV o l< 2 ’

что эквивалентно нарушению нормализации на один разряд влево.

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

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

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

Знак

Мантисса

^ нак Порядок

числа

 

порядка

5*

67

Делимое

00

11101111111

00

ОНО

= + 5 9 —

 

 

 

 

 

 

 

32

Делитель

00

11001010000

00

0100

=

+ 12

 

 

 

 

 

 

 

8

Частное

 

 

 

=

+ 4

т

 

 

 

 

П е р в ы й ш а г . Вычитая из кода порядка делимого код по­ рядка делителя, получим код порядка ча­ стного:

+ 00,0110

ПК

порядка делимого

11,1100

ДК

порядка делителя

00,0010

ПК

порядка частного.

В т о р о й

ш а г .

Складывая

коды знаков

делимого и

дели­

 

 

теля согласно таблице 3-1, получим код

 

 

знака частного:

 

 

 

 

 

 

00 + 00 -

00.

 

 

 

 

Т р е т и й

ша г .

Производим деление мантисс, пользуясь ме­

 

 

тодом с восстановлением остатка:

 

 

 

00,11101111111

ПК

мантиссы делимого

 

 

00,11001010000

ПК

мантиссы делителя

 

 

11,00110110000

ДК

мантиссы делителя

 

 

00,11101111111

ПК

делимого цифры

ман-

 

 

+

 

ДК

 

тиссы частного

 

 

11,00110110000

делителя

 

 

 

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

частного

 

 

 

 

00,00100101111

первый оста­

 

 

 

 

 

ток

положи­

 

 

 

 

 

тельный

01

 

 

 

00,01001011110

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

 

 

 

 

 

влево

на

 

 

 

 

 

1 разряд

 

 

 

 

11,00110110000

ДК

делителя

 

 

 

11,10000001110

Остаток отри­

 

 

 

 

 

цательный

 

 

 

 

 

 

01,0

 

 

 

, 11,10000001110

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

 

 

+00,11001010000

ПК делителя

 

 

 

 

00,01001011110

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

(ВО)

 

68

,00,10010111100

Сдвиг ВО на 1 разряд влево

 

+11,00110110000

ДК делителя

 

 

11,11001101100

Остаток отрицательный

01,00

,11,11001101100

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

 

+00,11001010000

ПК делителя

 

 

00,10010111100

ВО

 

 

,01,00101111000

Сдвиг ВО на 1 разряд влево

 

+11,00110110000

ДК делителя

 

 

00,01100101000

Остаток положительный

01,001

00,11001010000

Сдвиг остатка на 1 разряд

 

+

влево

 

 

11,00110110000

ДК делителя

 

 

00,00000000000

Остаток равен

0

01,0011

Конец циклического

процесса .

 

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

01,0011 - 00,10011

00,0010 -'г 00,0001 = 00,011.

Пя т ы й ш а г . Получаем следующее частное:

00.10011.00.0011.

Проверка.

00.10011.00.0011 = 00,10011 ■2+011 = +100,11 =

+ 4 ~ .

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

 

 

 

 

Знак

Мантисса

Знак

Порядок

 

 

числа

порядка

 

 

 

 

 

 

Делимое

И.

 

110010101011.

00.

111

= —101 —

 

 

 

 

 

 

 

32

Делитель

00.

 

100011010000.

00.

101

= +

17 —

 

 

 

 

 

 

 

8

Частное

 

 

 

 

 

 

4

 

 

 

 

 

 

 

П е р в ы й

ша г . Вычитая

из кода порядка делимого код

 

 

 

порядка делителя, получим код порядка

 

 

 

частного:

 

 

 

 

69

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