Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Операция умножения

Читайте также:
  1. VІ Қазақстан Республикасындағы валюталық операцияларды реттеу
  2. Windows операциялық жүйесі
  3. АНАЛИЗ ВЫПОЛНЕНИЯ ОБЯЗАТЕЛЬСТВ ПО ЭКСПОРТНЫМ ОПЕРАЦИЯМ
  4. Аудит расчетов по экспортно-импортным операциям
  5. Аудит расчетов с персоналом по прочим операциям
  6. Ашық нарықтағы операциялар
  7. Банк жүзеге асыратын операциялардың табиғатын ашып, сипаттама беріңіз
  8. Белгородско-Харьковская наступательная операция (3-23 августа 1943г).
  9. Билет 1. Понятие ссудного процента и его использование в финансовых операциях.
  10. Билет 4. Понятие простого ссудного процента и его использование в финансовых операциях.

Стандарт IEEE 754 настоятельно рекомендует вычислять промежуточный результат выполнения операции до его округления точно. Однако при ординарном решении этой задачи, как это показано в разделе 6.3 п.9, необходимы непомерно большие затраты из-за большой длины дополнительного поля мантисс операндов и суммы. В настоящем разделе рассматриваются способы сокращения этих затрат.

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

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

Прежде всего, заметим, что нет необходимости иметь дополнительные позиции операндов, так как можно при сдвиге мантиссы любого операнда вычислять содержимое дополнительных позиций суммы мантисс и значение займа из младшего разряда основного поля мантиссы. Для этого при одинаковых знаках операндов мантиссу с меньшим порядком достаточно сдвинуть вправо на разрядов и ее младшие разряды, выдвигаемые за пределы основного поля, сместить в дополнительные позиции суммы, что следует из рис.6-1 a. Для обеспечения правильной нормализации вправо переполненной суммы мантисс нет необходимости расширять дополнительное поле суммы еще на 1 разряд, так как переполнение суммы мантисс возможно только при (раздел 6.3 п.п.4 - 6).

При разных знаках операндов выполняется вычитание сдвинутой мантиссы из нормализованной. Результат вычитания содержит в дополнительных разрядах суммы мантисс дополнение выдвинутых разрядов до веса младшего сохраняемого разряда, и если они не равны 0, то образуется заем 1 из младшего разряда основного поля. Можно при выравнивании порядков операндов с разными знаками вдвигать в дополнительные разряды суммы дополнение выдвигаемых разрядов и, если дополнение не равно нулю, формировать заем 1 из младшего разряда основного поля. Так как результат вычитания сдвинутой (меньшей) мантиссы заведомо положительный, то будет вычислен прямой код суммы мантисс не только в сохраняемом поле, а и в дополнительном.

Операцию сложения/вычитания достаточно выполнять только в пределах поля сохраняемых разрядов.

Можно заменить операцию вычитания сложением мантиссы с большим порядком с дополнением мантиссы с меньшим порядком. Вычислять дополнение можно до или после выравнивания порядков.

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

Пример 6-2. Пусть порядок операнда X меньше порядка операнда Y на 3.

 
 

В варианте A операнды нормализованные с разными знаками. В первой строке дан прямой код мантиссы X (mX). До выравнивания порядков вычислено дополнение мантиссы mX (вторая строка). При выравнивании порядков дополнение mX сдвинуто на 3 разряда вправо (третья строка). При сдвиге вдвинуты три 1 показанные жирным шрифтом. Три младших разряда выдвинуты в дополнительное поле суммы мантисс (показано стрелкой). При сложении сдвинутой мантиссы mX с мантиссой mY перенос из старшего разряда отброшен. Вычислена точная сумма мантисс результата.

В варианте B, для сравнения с результатом вычислений в варианте A, при тех же операндах из прямого кода mY вычтен прямой код mX сдвинутый при выравнивании порядков на 3 разряда вправо. Результаты совпадают.

В варианте C те же операнды, что и в вариантах A и B, но их знаки совпадают. Поэтому мантисса mY суммируется с прямым кодом мантиссы mX сдвинутой на 3 разряда вправо. При сдвиге прямого кода слева вдвигаются нули, показанные жирным шрифтом. Три младших разряда прямого кода mX выдвинуты в дополнительное поле суммы мантисс.

В варианте C точная сумма мантисс переполнена. Признак переполнения – наличие 1 в ее старшем разряде.

 

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

Будем исходить из того, что точное значение суммы мантисс необходимо системе для

– нормализации мантиссы влево;

– правильного округления;

– пересылки откорректированного промежуточного результата обработчику прерывания в случае переполнения формата результата (раздел 5.5)[1].

 

Потребность в нормализации мантиссы влево может возникнуть только при разных знаках операндов (раздел 6.3 п.п.4-6). При сумма мантисс может быть денормализована вправо не более чем на 1 разряд. Поэтому для ее нормализации достаточно сохранять только старший разряд дополнительного поля мантиссы суммы.

При сумма мантисс может быть денормализована вправо не более чем на разрядов (раздел 6.3 п.5). Следовательно, при нормализации влево используется не более чем старших разрядов дополнительного поля. Но так как в дополнительном поле находится не более чем 1 значащий разряд. Все прочие разряды дополнительного поля содержат нули и их можно задать по умолчанию.

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

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

Если оба операнда ненормализованные, потребность в дополнительном поле отсутствует (раздел 6.3 п.3).

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

Дополнительное поле суммы мантисс (см. варианты A-C примера 6-2) усекается до трех старших бит. Функция третьего младшего бита изменяется. Третий бит содержит признак наличия 1 справа от двух старших разрядов записанных в дополнительном поле.

В исходном состоянии содержимое трех битового дополнительного поля должно быть равно нулю.

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

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

 

Проверим работоспособность этого способа.

Если оба ненормализованные, содержимое дополнительного поля не используется и его длина не играет роли. Результат будет вычислен точно (раздел 6.3 п.3).

Если один или оба операнда нормализованы, то

· независимо от сочетания знаков операндов, если сумма мантисс нормализованная, в дополнительном поле содержится информация необходимая для правильного округления, так как известно значение двух старших отбрасываемых разрядов и признак отсутствия/наличия единиц в остальных;

· если сумма мантисс переполнена, после ее нормализации вправо в дополнительном поле содержится информация необходимая для правильного округления;

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

 

Действительно. Сумма мантисс может быть денормализована вправо только при разных знаках операндов (раздел 6.3 п.п.4-6). При сумма мантисс может быть денормализована вправо не более чем на 1 разряд. При нормализации на 1 разряд влево Старший разряд дополнительного поля сместится в основное поле и его место займет следующий. Информация о новом значении старшего отбрасываемого при округлении разряда и об отсутствии/наличии 1 во всех других разрядах выдвинутых за пределы основного поля в дополнительном поле сохранится. Поэтому округление будет выполнено правильно.

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

Исключительная ситуация переполнения суммы может сложиться при нормализации суммы мантисс вправо или при округлении. В любом случае обработчику прерывания следует переслать значение суммы полученной делением точного результата существовавшего до округления на и затем округленного (раздел 5.5). Поэтому проявить ситуацию переполнения следует до округления. Деление на сводится к уменьшению смещенного порядка на a. В обоих случаях в дополнительном поле содержится информация необходимая для правильного округления.


[1] Исключительная ситуация потери значимости при сложении сложиться не может (раздел 5.6.3).

Операция умножения

 

Рассмотрим выполнение операции над операндами в основных форматах стандарта
IEEE 754, причем форматы операндов могут не совпадать. Формат результата примем равным более длинному формату операнда.

Исключительная ситуация невыполнимая операция складывается, если

- хотя бы один из операндов сигнализирующее NaN;

- один из операндов 0, а другой .

 

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

Если сигнал прерывания заблокирован, то результат должен получить зарезервированное на этот случай значение простого NaN.

Если один или оба операнда простые NaN, то в результат копируется одно из NaN.

Если один или оба операнда равны , то результат определяют по табл.5.5.

Если один операнд равен 0, а другой не равен и не является NaN, то результат равен нулю. Знак нулевого результата (+), если знаки операндов совпадают, иначе знак результата (-).

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

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

При разных длинах форматов операндов обычно, выполняют преобразование операнда в коротком формате в формат длинного операнда (раздел 6.1.1). Кроме того, расширяют поле дробной части мантиссы каждого операнда на 1 бит слева, записывая в него значение разряда целого заданного неявно.

Примем, что оба операнда представлены в одинаковом формате и старшие разряды мантисс заданы явно.

При ; точное произведение

. (6-01)

 

Знак произведения равен сумме по модулю 2 знаковых разрядов операндов.

Из (6-01) следует, что мантиссу точного произведения Z можно принять равной , а порядок .

Точное произведение мантисс можно вычислить, например любым из способов, рассмотренных в разделе 4.4. Его длина будет 2 , где – длина поля мантиссы операнда. Два старших разряда содержат значение целой части, так как при точное произведение мантисс . Записать точное произведение мантисс длиной 2 с двумя разрядами целой части в формат результата нельзя.

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

 




Дата добавления: 2014-12-20; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав