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

Арифметика смещенных порядков

 

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

В этом подразделе рассматривается арифметика порядков, прежде всего для распространенного в практике случая, когда порядок  в формате представлен смещенным порядком

.                                                      (6-16)

 

Во вводной части раздела 5 рассматриваются два варианта смещения порядка числа с плавающей точкой. В первом варианте смещение , а во втором , где  – индекс старшего значащего разряда целого порядка со знаком. Стандарт IEEE 754 применяет . В формате одинарной точности при  значение . В формате двойной точности  и . В специализированных вычислителях, не удовлетворяющих требованиям стандарта IEEE 754, может быть выбрано смещение . Тогда при  смещение . При .

При выполнении операций над числами с плавающей точкой выполняют операции над смещенными порядками.

Вычисление порядка и смещенного порядка

Исходные данные могут вводиться в ЦВМ в естественной или нормальной форме в разных системах счисления и затем преобразовываться в двоичную систему счисления с записью в формат с плавающей точкой со смещенным порядком. До записи в формат порядок E представлен, как правило, в прямом или в дополнительном двоичном коде числом со знаком. Для записи в формат необходимо вычислить смещенный порядок . При выводе числа из ЦВМ, а иногда с иной целью, необходимо вычислять порядок E по значению смещенного порядка . При обоих вариантах преобразования следует поддерживать отношение (6-16), но с некоторыми оговорками.

В базовых форматах стандарта IEEE 754 (раздел 5.3) отношение (6-16) справедливо, если число нормализованное и порядок не выходит за пределы интервала  допустимых значений. Если число ненормализованное с минимальным порядком, смещенный порядок

 

                                             (6-17)

 

В табл.6.2 приведен прямой, обратный, дополнительный и смещенные коды порядка E при длине поля порядка 8 бит.

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

Например, из табл.6.2 следует, что дополнительный код E отличается от смещенного при  лишь содержимым разряда знака. Из этого следует, что при их взаимном преобразовании достаточно инвертировать код в старшем разряде.

При преобразовании прямого или обратного кода в смещенный при  достаточно выполнять их преобразования в дополнительный код (раздел 3.2.1) и инвертировать разряд знака результата. При обратном преобразовании инвертировать старший разряд и полученный дополнительный код преобразовать в прямой или дополнительный.

Таблица 6.2

Порядок E Прямой код Обратный код Смещенный bias=127 Дополн. код Смещенный bias=128
+127 +126 +125 … +3 +2 +1 +0 –0 –1 –2 –3 … –125 –126 –127 01111111 01111110 01111101   00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011   11111101 11111110 11111111 01111111 01111110 01111101   00000011 00000010 00000001 00000000 11111111 11111110 11111101 11111100   10000010 10000001 10000000 11111110 11111101 11111100   10000010 10000001 10000000 01111111 01111111 01111110 01111101 01111100   00000010 00000001 00000000 01111111 01111110 01111101   00000011 00000010 00000001 00000000 00000000 11111111 11111110 11111101   10000011 10000010 10000001 11111111 11111110 11111101   10000011 10000010 10000001 10000000 10000000 01111111 01111110 01111101   00000011 00000010 00000001

 

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

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

Безусловно, существует множество иных вариантов преобразования.

При преобразовании порядка E в смещенный порядок  в формате стандарта IEEE 754 необходимо учитывать, что прямой код минимально допустимого порядка , и если мантисса нормализована, он преобразуется в смещенный порядок . Если мантисса ненормализованная, то смещенный порядок, соответствующий , следует принять равным 00…0. При обратном преобразовании смещенному порядку  ненормализованного числа соответствует минимальный порядок E= 1|11…10. Кроме того, необходимо учитывать особенности представления числа равного нулю.

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

Признак нулевого порядка. Из (6-16) следует, что признаком порядка E=0 является код bias в поле смещенного порядка.

Признак знака порядка. Из (6-16) следует, что при , код ; при , код . Так как  или , то при  знак E однозначно определяется старшим битом . При  старший бит , при  старший бит .

Например,

- при  и  код ; при  код ;

- при  и  код ; при  код .

 

Значение E=0 можно рассматривать как число, со знаком (+), со знаком (–) или без знака. Чтобы не усложнять оценку знака порядка можно принять, что при  порядок равный нулю имеет знак (–), а при  порядок ноль имеет знак (+).

 

Признак максимального порядка. Порядку  в общем случае соответствует максимальный смещенный порядок . В стандарте IEEE 754 код  применяется для кодирования нечисловых величин. Поэтому признаком  является код .

 

Признак минимального порядка. Порядку  в общем случае соответствует минимальный смещенный порядок . В стандарте IEEE 754 порядок  представлен двумя кодами  и . Поэтому признаком порядка  является наличие нулей во всех битах поля смещенного порядка кроме младшего.

Сравнение порядков

Признак равенства порядков. В общем случае порядки  и  равны , если при равных bias коды смещенных порядков  и  совпадают. При равенстве порядков дизъюнкция всех бит поразрядной суммы по модулю 2 кодов смещенных порядков  и  равна 0. В этом случае , , .

Если числа представлены в одинаковых базовых форматах стандарта IEEE 754, то необходимо дополнительно учитывать, что неравные смещенные порядки 00…01 и 00…0 соответствуют порядку .

 

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

Сравнение можно выполнить просмотром слева направо пар одноименных бит кодов  и .

Если пара бит  и  равна 10, то , , .

Если пара бит равна 01, то , , .

Если пара бит равна 00 или 11, смотрим очередную пару.

Если все пары бит совпадают, то , , .

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

 

Пример 6-3. Сравниваются коды  и . Результаты сравнения приведены под ними. Вывод о результате сравнения сделан на основании значения пары бит выделенной жирным шрифтом. В варианте C все пары бит совпадают. Поэтому .

Результат сравнения порядков можно получить, анализируя разность смещенных порядков .

Если , то , , . В противном случае при  отношения , ,  иначе , , .

При сравнении порядков чисел в стандарте IEEE 754 следует учитывать неоднозначность представления  в поле смещенного порядка и форматы, в которых они представлены. Например. Если оба числа в одинаковом формате и известно, что они ненормализованные, то их порядки равные и минимальные. Если оба числа нормализованные, то их порядки равны, если равны смещенные порядки, и порядок того числа больше, у которого смещенный порядок больше. Если одно из чисел нормализованное, а другое нет, то их порядки равны, если смещенный порядок нормализованного числа 00…01. В противном случае порядок нормализованного числа больше, чем ненормализованного.

Сравнение порядков чисел в разных форматах существенно усложняется. Чтобы упростить сравнение порядков, можно предварительно число в меньшем формате записать в больший формат как это описано в разделе 6.1.1. Однако можно сравнивать порядки без преобразования формата числа. Рассмотрим сравнение порядков чисел записанных в разных форматах на примере.

Пусть  и  смещенные порядки нормализованных чисел записанных в форматы двойной и одинарной точности соответственно. Тогда в соответствии с (6-16) при  порядки ; . При  должно быть . Откуда следует признак равенства порядков . Двоичный код . Прибавление константы  к восьмибитовому коду  сводится к инвертированию старшего разряда , и если он был равен 1, то к результату приписывается слева код 100, иначе приписывается код 011. Полученный в формате двойной точности код  можно сравнивать с кодом .

Если , то порядки ; . Признак равенства порядков  такой же, как в предыдущем примере.

Если числа представлены в форматах двойной и одинарной точности стандарта IEEE 754, то порядок ненормализованного числа в формате двойной точности заведомо меньше порядка любого числа в формате одинарной точности. Если число в формате одинарной точности ненормализованное, достаточно смещенный порядок в формате двойной точности сравнивать с константой 011 0000 00102 соответствующей порядку (–126).

Сложение порядков

Необходимость сложения порядков существует при умножении чисел (раздел 6.4).

В общем случае форматы операндов X и Y разные. Пусть длины полей смещенных порядков  и смещения  соответственно. Результат сложения смещенных порядков

 

,     (6-18)

 

равен сумме порядков, смещенной на , и имеет длину .

Записать сумму смещенных порядков в поле порядков результата, имеющего формат длинного операнда, нельзя по следующим причинам. Длина смещенной суммы порядков на 1 бит превышает длину поля порядка формата. Смещение суммы порядков превышает  принятое в формате результата. Область определения суммы порядков  существенно превышает область определения порядка в формате длинного операнда .

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

 

По значению суммы (6-18) можно определить переполнение суммы порядков в положительную и отрицательную стороны, ее равенство максимально допустимому  и минимально допустимому  порядку в формате результата и все иные признаки, сравнивая  с соответствующими константами, увеличенными на .

В исключительной ситуации переполнения формата (п.2 в разделе 6.4), если результат умножения подлежит пересылке обработчику прерывания, в поле смещенного порядка формата результата записывают вычисленный смещенный на  порядок произведения, уменьшив его на , где  – поправка смещения (раздел 5.5). Затем выполняют округление и последующую пересылку результата. Если сигнал прерывания заблокирован, в результат записывают код .

Если один из операндов число ненормализованное и произведение мантисс денормализовано вправо (п.3 в разделе 6.4), нормализация произведения мантисс с соответствующим уменьшением суммы смещенных порядков может вызвать переполнениеее формата в сторону отрицательных чисел, что нежелательно.

 

Пример 6-3. Пусть операнды  и  представлены в форматах двойной и одинарной точности стандарта IEEE 754 соответственно и имеют значения  и . Операнд  представлен в формате как нормализованное число с мантиссой  и смещенным порядком , а операнд  – число ненормализованное с мантиссой  и смещенным порядком .

Поскольку  – число ненормализованное, то при умножении  примем . Тогда . Произведение мантисс

 

 

денормализовано на 22 разряда. Нормализация произведения мантисс потребует уменьшения суммы смещенных порядков на 22. Смещенный порядок произведения станет отрицательным.

 

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

 

.                     (6-19)

 

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

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

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

Когда порядок  смещен на , то при сравнении  с константами следует сравнивать смещенный код  с константами, увеличенными на . Например, чтобы вычислить отношение , нужно выполнить сравнение кодов .

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

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

 

Пример 6-4.

В варианте A операнды  и  представлены в формате двойной точности стандарта IEEE 754. Операнд  нормализованное число с максимальным смещенным порядком . Операнд  ненормализованное число со смещенным порядком . Поправка смещения в двойном формате  (раздел 5.5). При сложении смещенных порядков принято .

 
A                               B 111 1111 1110          111 1111 1110 (204710) + 110 0000 0001       + 110 0000 0001 (153710)  1101 1111 1111       1101 1111 1111 (358310)

 


В варианте B операнд  представлен в двойном, а операнд  – в одинарном формате стандарта IEEE 754. Смещенные порядки , а . Результат умножения должен быть вычислен в двойном формате. Поэтому поправка смещения  (такая же, как в варианте A). Поскольку операнд  ненормализованный, то при сложении его смещенный порядок заменен константой .

Совпадение сумм смещенных порядков в вариантах A и B, несмотря на очевидное различие сумм порядков, обусловлено несовпадением их смещений. Действительно.

В варианте A , . Сумма . Смещение суммы порядков равно . Поэтому .

В варианте B , . Сумма . Однако в варианте B смещение . Поэтому , и коды сумм порядков в вариантах A и B совпадают.

 

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

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

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

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

        (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. Исключительные ситуации переполнения и потери значимости сложиться не могут.


Дата добавления: 2020-11-23; просмотров: 175; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!