Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 6.6 Арифметика смещенных порядков.doc
Скачиваний:
4
Добавлен:
14.08.2019
Размер:
493.06 Кб
Скачать

6.6.5. Вычитание порядков

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

В общем случае форматы операндов и не совпадают и смещения порядков не равны. Разность

(6-20)

является числом со знаком в дополнительном коде. Знак разности равен значению займа из старшего разряда. Разность порядков частично смещена в зависимости от знака в направлении или на .

При

. (6-21)

Замечание. Если операнды в форматах стандарта IEEE 754 и один из них ненормализованный, то при вычисления разности порядков его смещенный порядок следует принять равным 1.

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

(6-22)

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

При выравнивании порядков (раздел 6.3), знак разности (6-21) указывает, какую мантиссу следует сдвигать. Однако количество разрядов, на которое нужно сдвинуть мантиссу, в дополнительном коде. Чтобы получить прямой код количества разрядов, нужно выполнить преобразование кода разности или всегда вычитать из большего смещенного порядка меньший.

Поскольку при делении нормализованных чисел в одинаковых форматах стандарта IEEE 754 (раздел 6.5) порядок промежуточного результата

, (6-23)

где – заем из младшего разряда (6-04), вычислен в дополнительном коде, то при сравнении его с константами, например с , их значение должно быть представлено в дополнительном коде и сравнение следует выполнять по правилам сравнения чисел в дополнительном коде (раздел 4.6).

Если условие (6-06) удовлетворено, то в поле смещенного порядка результата следует записать

(6-24)

и округлить мантиссу до точности формата.

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

, (6-25)

чтобы сместить порядок и ввести поправку смещения (раздел 5.5). Мантиссу округлить до точности формата.

Если и исключительная ситуация потери значимости (6-07), (6-08) не складывается или сигнал прерывания при потере значимости заблокирован, принять

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

(6-26)

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

Если один операнд ненормализованный, то при его нормализации более чем на 1 разряд смещенный порядок станет отрицательным, что нежелательно. Избежать такой ситуации можно увеличением смещенного порядка нормализованного операнда вместо уменьшения смещенного порядка ненормализованного операнда при нормализации последнего. Конечно, оба операнда получат неправильные порядки, но интересующая нас разность порядков будет вычислена правильно, что следует из справедливости отношений:

.

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

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