Файл: Архаров В.И. Арифметические и логические основы цифровых вычислительных машин учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.07.2024
Просмотров: 92
Скачиваний: 1
Алгебраическое суммирование двух чисел в ЦВМ с плавающей запятой выполняется по следующему алгоритму. Из порядка пер вого числа вычитается порядок второго числа. Знак разности по рядков указывает, какая из мантисс сдвигается вправо при вырав нивании порядков, и порядок какого слагаемого принимается за порядок результата.
Если разность порядков положительна, мантисса второго сла гаемого сдвигается вправо на один разряд с одновременным вычи танием единицы из разности порядков до тех пор, пока разность порядков не будет равна 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 |