Файл: Дроздов Е.А. Многопрограммные цифровые вычислительные машины.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2024
Просмотров: 293
Скачиваний: 0
Ра > Р в . Тогда для выравнивания порядков |
следует |
порядок р в |
||||
увеличить на величину |
разности р А— р в , |
т. е. |
|
|
|
|
в NPa ~Pb |
= n Pbn Pa~Pb - |
|
= |
N PAm' |
(2.19) |
|
n pa- pb |
|
PA~PB |
|
b |
|
|
|
N‘ |
|
|
|
|
|
i |
|
|
»rPA—PB |
, т. e. сдвинутая |
||
где mB— мантисса ms , разделенная на |
N |
|
на рА—Рв разрядов вправо.
Теперь сумму чисел с одинаковыми (выравненными) порядка ми можно представить в виде
5 = N Psms = N PAmA + N PAm’B= N Pa (tnA+ m'B). (2.20)
Следовательно, мантисса суммы ms = mA -\- т ’в и порядок сум
мы p s = P A.
Если выполняются операции с автоматической нормализацией, то по окончании сложения сумма S нормализуется.
Таким образом, сложение чисел с разными порядками состоит из трех этапов:
—выравнивание порядков слагаемых;
—сложение мантисс;
—нормализация результата.
Мантиссы слагаемых с выравненными порядками складыва ются аналогично сложению чисел с фиксированной запятой. Для представления отрицательных мантисс используются дополнитель ный или обратный код.
При алгебраическом сложении мантисс возможны случаи по лучения результата, меньшего 0,1... (двоичное число). Такие слу чаи называются нарушением нормализации вправо. Признаком такого нарушения нормализации чисел, представленных в любом коде (прямом, дополнительном или обратном), является наличие одинаковых цифр (О’.О или Г.1) в двух разрядах слева неправа от запятой.
При сложении мантисс, по абсолютной величине меньших еди ницы, возможны случаи переполнения разрядной сетки сумматора мантисс, называемые нарушением нормализации влево. Если при меняются модифицированные коды, то признаком нарушения нор мализации влево служит появление разных цифр (0 Г ,... или 10’, ...) в знаковых разрядах.
Результат нормализуется путем сдвига мантиссы в нужную сто рону и коррекции порядка суммы. При нарушении нормализации вправо мантисса в процессе нормализации сдвигается влево до тех пор, пока в разрядах слева и справа от запятой не появятся разные цифры, например, ОМ... или Г.О... По окончании сдвига мантиссы порядок суммы уменьшается на число единиц, соот ветствующее числу разрядов, на которое была сдвинута ман тисса.
62
При нарушении нормализации влево мантисса суммы в про цессе нормализации сдвигается на один разряд вправо, а порядок увеличивается на единицу. После сдвига мантиссы вправо она округляется, как было указано в § 2.4 для случаев умножения и деления.
Пример 2.15. Пусть требуется сложить два числа, записанные в запоминаю щем устройстве в следующем виде:
[Л]пр= |
0 .1 1 0 1 ’ ’1 0 1 0 0 |
и |
[£ |пр= 1 . 1 1 0 0 ' 40110, |
||||
|
|
|
|
|
|
.1 |
|
Знак числа |
Мантисса |
|
Знак числа |
Мантисса |
|||
Характеристика |
|
|
|
Характеристика |
|||
что соответствует |
|
|
|
|
|
|
|
Л = шдМРа = |
+ 0,10100-Ю11»1 |
и В = тв МРв = — 0.10110-1011»0. |
|||||
Характеристики |
р \ и рв представляют собой |
|
|||||
и |
р'л = [рд 1пр + 23 = |
0.101’ |
+ 1000 = 1101’ |
||||
|
|
|
|
|
|
|
|
Рв = [рв ]пр + |
23 = 0.100’ + |
1000 = |
1100’, |
||||
где рА и рв истинные порядки |
(дд = |
+ |
101 |
и рв = |
+ 1 0 0 ). |
а) Выравниваем порядки слагаемых, для чего вычитаем из характеристики р \ характеристику рв . Вычитание заменяем прибавлением дополнения рв до 24,
т. е. 0100. Тогда
,1101
+0100
0001.
Так как р'А на единицу больше рв ,то сдвигаем вправо на один разряд ман
тиссу [/йй|Пр = Г. ЮНО. В результате получаем [шд]пр = Г,01011.
б) Складываем мантиссы с использованием модифицированного дополни тельного кода:
[т л]пР = оомоюо
+Ы д о п = + Н'Л0Ю1
К]п р + К ]д оп = 00\01001 = [тА + т'в]«г
-------^Нарушение нормализации вправо!
в) Нормализуем результат 0,01001 • 101101, для чего сдвигаем мантиссу на один разряд влево и из значения характеристики суммы вычитаем единицу. Нор мализованный результат 0 , 1 0 0 1 -Ю1100.
В запоминающее устройство результат суммирования будет записан в сле дующем виде:
0. 1100’ ’ 1001.
63
Результат алгебраического сложения может превысить макси мально возможное число, которое может быть представлено в ма шине. Это обнаруживается как возникновение порядка, превышаю щего после нормализации результата максимально допустимый (например, при сдвиге мантиссы вправо и при прибавлении' еди ницы к порядку). В таких случаях в арифметическом устройстве вырабатывается сигнал, вызывающий прерывание исполняемой программы.
Вычитание. По команде ВЫЧЕСТЬ вычитание чисел с разны ми порядками, как и сложение, производится в три этапа:
—выравнивание порядков;
—вычитание мантисс;
—нормализация результата.
При вычитании мантисс в арифметическом устройстве искус ственно меняется знак вычитаемого на обратный, что позво ляет операцию вычитания формально свести к операции сло жения.
Умножение. Из общего выражения для произведения двух чи сел A — mAN PA и В = mBN PB, представленного в виде
П = |
mnN Pn = mAtnBN р а + р в |
( 2 . 21) |
следует, что порядок произведения рп = РА + Рв |
и мантисса про |
|
изведения т^ — тлтв. |
|
|
Перемножение мантисс чисел, представленных з форме с пла вающей запятой, выполняется аналогично умножению чисел, пред ставленных в естественной форме с фиксированной запятой. Поря док произведения определяется путем суммирования порядков со множителей.
Если вместо истинных порядков применяются характеристики P'a = P a jt 2? и р'в = РвЛ- 29, где q — количество двоичных раз рядов, которое может иметь число, выражающее максимально воз можный порядок, то характеристика произведения определяется как
( 2.22)
В общем случае процесс умножения состоит из следующих этапов:
— определение знака произведения путем сложения по mod 2 знаковых разрядов мантисс сомножителей;
—определение порядка произведения;
—перемножение мантисс;
—нормализация результата.
Если перемножаются двоичные нормализованные числа, то ман тисса произведения тн может иметь любое значение в пределах 0,01 <|#гп|<4.0 и, следовательно, может иметь место только на рушение нормализации вправо не более чем на один разряд. Слу-
Н
чаи переполнения сумматора порядков фиксируются выработкой специального сигнала переполнения.
Деление. При делении чисел, представленных в полулогариф мической форме, мантисса частного определяется путем деления мантиссы делимого на мантиссу делителя, а порядок частного — вычитанием порядка делителя из порядка делимого. Деление ман тисс выполняется точно так же, как и деление чисел с фиксирован ной запятой, выраженных в виде правильных дробей.
В общем случае процесс деления в машинах с плавающей запя той состоит из следующих этапов:
—- определение знака частного;
—определение порядка частного;
—деление мантисс;
—нормализация результата.
При делении двоичных нормализованных чисел мантисса част ного оказывается заключенной в пределах 0,1 <С | то, | <10. В ре зультате может иметь место нарушение нормализации влево не более, чем на один разряд.
§ 2.6. Арифметические операции над десятичными числами
При организации выполнения таких действий десятичные числа обычно представляются как целые, т. е. с запятой, фиксированной справа. Для операций сложения и вычитания они выравниваются по правой границе, определяемой этой запятой. Арифметические операции над десятичными числами начинаются с анализа знаков. Если знаки одинаковые, то по команде СЛОЖИТЬ числа скла дываются в прямом коде. Если знаки разные, то из большего числа вычитается меньшее. Меньшее, в данном случае отрицательное,
число |
представляется в виде |
дополнения до 10п, где п — количе |
ство |
десятичных разрядов в |
наиболее длинном из участвующих |
в операции операнде. В результате вычитание заменяется сло жением положительного числа с дополнением отрицательного. При выполнении команды ВЫЧЕСТЬ знак второго операнда предвари тельно изменяется на обратный, после чего действия над деся тичными операндами в арифметическом устройстве производятся так же, как и при алгебраическом сложении.
Пример 2.16. Аналогично примеру 2.7, используя кодирование с избытком 6 , произвести арифметические операции сложения и вычитания.
а) |
Сложить числа /Ь = +82 и А2——75 (+1000 0010 и —0111 0101). Допол |
||||
нение 75 до 102 |
равно 25, тогда |
|
|||
,82 |
А, |
и |
1 0 0 0 |
0 0 1 0 |
А, |
"*”25 Доп. А2 |
|
"П000 |
1011 |
Доп. А2 (с избытком б в каждой тетраде) |
|
п «- 07 |
Л + А2 |
п ч- 0000 |
1101 |
|
|
|
|
|
+ |
1010 |
Коррекция |
|
|
|
|
||
|
|
|
Q0QO 0Ш |
А} + А3 |
65
При выполнении сложения над числами в двончио-десятнчпой форме допол нение второго числа определяем путем инвертирования значений двоичных раз рядов в тетрадах с прибавлением единицы в младший разряд младшей тетрады. Такое дополнение получается с потетрадным избытком 6 . Поэтому если при сло жении нет переносов из каких-либо тетрад, то они корректируются путем вычи тания из них 6 (прибавления 1010— дополнения 6 до 16). Наличие переноса п из старшей тетрады при сложении Ai и дополнения Д2 свидетельствует о том, что
результат получился в прямом коде.
б) Найти разность Л]—Д2= 75—82= 75+(—82).
Дополнение 82 до 102 равно 18, тогда
75 |
Д, |
и |
О + |
|
18 |
Доп. — Д2 |
|
О |
|
|
|
|
||
93 |
Доп. Д] — Д2 |
|
1 1 1 1 |
J |
|
|
|
А |
|
07 |
Д4 — Л2 |
|
I |
|
|
|
|
+ 1 0 1 0 |
|
|
|
|
1001 |
|
, 0 1 1 0
+ 1 0 1 0 0 0 0 0
Д ,— А2 = — 7 (-0000 0111).
0 Ю1 д ,
1110 Доп. А2 ( с избытком 6 в каждой тетраде)
ООН
Коррекция ООП Доп. А — а 2
1101 Д, — А2 ( с избытком 6 в каждой тетраде)
1010 Коррекция
0111 Ai — Д2 (истинное значение)
В данном примере отсутствие переноса из старшей тетрады при сложении Ai
и дополнения для — Д2 говорит о том, что результат получился отрицательный в виде дополнения. Для определения истинного значения результата надо от по лученного дополнения для А^— Д2 взять новое дополнение и из него потетрадно
вычесть 6 (прибавить 1 0 1 0 ).
Таким образом, при сложении чисел с разными знаками ука занным выше образом знак результата определяется по наличию или отсутствию переноса из старшей тетрады. Если перенос есть, то результат положительный в прямом коде. Если нет переноса, то получается отрицательный результат в виде дополнения. Когда при сложении чисел с одинаковыми знаками возникает перенос из старшей тетрады, то это свидетельствует о десятичном пере полнении.
В отличие от действий над двоичными числами умножение и де ление десятичных чисел в машинах реализуется сложнее. Суще ствуют различные способы выполнения этих операций. Умножение может производиться как путем последовательного формирования частных произведений с помощью десятичной таблицы умноже ния, специальным образом введенной в машину, так и по способу последовательного сложения. Процессы последовательного сложе ния в различных модификациях, позволяющих в той или иной мере повышать скорости вычислений, аналогичны тем, которые исполь зуются при вычислениях вручную с помощью обычных арифмо
метров.
Суть процесса последовательного сложения заключается в том, что множимое, определенным образом сдвинутое, прибавляется столько раз, сколько единиц содержится в очередной цифре мно жителя, на которую производится умножение,
66