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

4.6. Выполнение операции сложения над числами с плавающей запятой

Рассмотрим специфику операции сложение-вычитание с плавающей запятой. Число Х, представленное в форме с плавающей запятой, имеет вид:

,

где p – порядок числа, М – мантисса, k – основание системы счисления. Если каждому числу Х однозначно соответствует пара p, k, то 1>|M|k-1, а число Х называется нормализованным.

Порядок и мантисса числа записываются в своих разрядах в виде чисел с фиксированной запятой; мантисса – в виде дробного числа с запятой перед старшим из основных разрядов, порядок – в виде целого числа с запятой после младшего разряда. Структура представления в ЭВМ числа с плавающей запятой более подробно рассмотрена в гл.I п.1. Разрядная сетка машины с плавающей запятой имеет следующий вид:

m

0

-1 - n

Порядок

Мантисса

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

Выполнение операции сложения-вычитания чисел с плавающей запятой состоит из следующих этапов:

- выравнивание порядков;

- суммирование мантисс;

- определение порядка результата;

- нормализация результата;

- округление результата.

Выравнивание порядков осуществляется путем сдвига вправо мантиссы числа с меньшим порядком. Так как сдвиг вправо эквивалентен делению мантиссы на k, то при каждом сдвиге порядок должен увеличиваться на 1. Порядок результата принимается равным порядку большего числа. В результате алгебраического сложения мантисс после выравнивания порядка получают мантиссу суммы (разности). Полученная сумма (разность) нормализуется.

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

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

а) px - py n, где n – число разрядов мантиссы, при этом в качестве результата сразу берется первое слагаемое, поскольку при выравнивании порядков все разряды мантиссы второго слагаемого принимают нулевые значения;

б) px-py<n– второе слагаемое является результатом суммирования;

в) px-py= 0 – приступают к суммированию мантисс;

г) px - py = k1 (k1 < n) – мантисса второго слагаемого сдвигается на k1 разрядов вправо, затем мантиссы суммируются;

д) py - px = k2 (k2 < n) – мантисса первого слагаемого сдвигается на k2 разрядов вправо, затем мантиссы суммируются.

Мантиссы, полученные после выравнивания порядков, складываются как двоичные числа с фиксированной запятой. При этом результат может оказаться ненормализованным. Если используются модифицированные коды, то переполнение (левое нарушение нормализации) определяется по комбинациям цифр 01 и 10 в знаковых разрядах суммы мантисс. Нормализация заключается при этом в сдвиге мантиссы результата вправо на 1 разряд. Правое нарушение нормализации определяется по комбинациям цифр 00,0 (11,1) в старшем и знаковом разрядах мантиссы результата. При этом нормализация результата заключается в сдвиге мантиссы результата влево до тех пор, пока не появится “1” (“0”) в старшем разряде сетки мантиссы.

При нормализации сдвиг вправо результата и отбрасывание его младшего разряда могут привести к большой положительной ошибке. Для уменьшения погрешности применяют округление, состоящее в использовании дополнительного разряда со стороны младших разрядов. Если в дополнительном разряде будет 1, то ее добавляют в младший основной разряд. Вследствие этого погрешность будет закономерной и не больше 2-n веса младшего разряда.

4.7. Операции умножения и деления чисел с плавающей запятой

Числа X, Y, представленные с плавающей запятой, имеют соответствующие порядки px и py, которые целые и могут лежать в диапазоне - (2+m-1)  p  +(2+m-1). Величины pmin= -(2+m-1) и pmax= +(2+m-1) представляют собой минимальный и максимальный порядки, которые могут быть размещены в разрядной сетке порядков. Если при микрооперациях с порядками порядок получается меньше чем pmin, то число считается “малым” (отрицательное переполнение разрядной сетки порядков) и его приравнивают к нулю. Если порядок после микрооперации получается больше pmax, то число получается “большим” и не может разместиться в разрядной сетке (положительное переполнение) ЭВМ. Поэтому результат считается неверным, вычисления прекращают, выдавая сигнал переполнения.

Операции умножения и деления с плавающей запятой легко сводятся к операциям с фиксированной запятой:

Z=XY=2Px + Py (MX · MY), Z=X/Y=2Px - Py (MX / MY).

При умножении (делении) порядки складываются (вычитаются) по правилам сложения с фиксированной запятой после младшего разряда, а мантиссы умножаются (делятся) по правилам умножения (деления) чисел с фиксированной запятой перед старшим разрядом. При микрооперациях над порядками проверяются отрицательное и положительное переполнение. После микроопераций над мантиссами проверяется нормализация мантиссы результата. При умножении нормализованных мантисс результат может получится ненормализованным (правое нарушение нормализации). Например, в прямом коде MX=0.10...0, MY=0.10...0, MZ=0.010...0, где |MZ|<1/2. В этом случае необходимо результат MZ сдвинуть влево, от порядка результата pZ вычесть единицу, проверить на отрицательное переполнение порядка.

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

Соседние файлы в папке Дубинин Н.М. Организация ЭВМ и Систем