Сложение двоичных чисел с плавающей запятой

Сложение двоичных чисел с плавающей запятой

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

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

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

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

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

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

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

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

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

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

Пример (первый случай).

Слагаемые:

Требуется найти , т.е найти и .

Первый шаг.

Уравнивание порядков слагаемых, т.е. денормализация слагаемого , чтобы его порядок стал равен + 101.

После уравнивания .

Второй шаг.

Перевод мантисс обоих слагаемых в модифицированный обратный код

Третий шаг.

+

.

Четвертый шаг.

Перевод мантиссы суммы в прямой код .

Результат операции сложения .

Пример (второй случай).

Слагаемые:

Требуется найти , т.е найти и .

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

Уравнение порядков в данном примере не требуется.

Первый шаг.

Перевод мантисс слагаемых в модифицированный обратный код

Второй шаг.

Сложение мантисс слагаемых

Третий шаг.

Перевод мантиссы суммы в прямой код

.

Произошла денормализация вправо на три разряда.

Четвертый шаг.

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

Результат операции сложения

Пример (третий случай).

Слагаемые:

Требуется найти , т.е найти и .

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

Первый шаг.

Уравнение порядков слагаемых

.

Второй шаг.

Перевод мантисс слагаемых в модифицированный обратный код

Третий шаг.

Сложение мантисс слагаемых

+

1 10,111011101

Произошло переполнение разрядной сетки (денормализация влево), т.к. в знаковых разрядах мантиссы суммы оказались разные знаки.

Четвертый шаг.

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

Читайте также:  Как удалить рекламу на андроиде без рут

Пятый шаг.

Перевод мантиссы суммы в прямой код

Результат операции сложения

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

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

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

Допустим, что необходимо сложить два двоичных числа, представленных в форме с ПТ: mA*2 ПА +mB*2 ПВ =mC*2 ПС .

Опишем последовательность действий, выполняемых при сложении с ПТ.

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

a. Если D>0, это означает, что порядок А больше, чем порядок В, и следовательно, порядку результата надо присвоить значение ПА, а мантиссу числа В — сдвинуть на D разрядов вправо. Для этого необходимо, выполнив сдвиг mB на один разряд вправо, вычесть 1 из разности D. Если полученная разность не окажется равной 0, продолжить сдвиги мантиссы В, пока D не станет равной 0.

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

Критерием нарушения нормализации слева является признак l: Нарушение нормализации слева может возникнуть при сложении чиселс разными знаками. Если складываются числа близкие по абсолютной величине и с разными знаками, то результат сложения может оказаться -1 или нулевым. В этом случае нормализация состоит в том, что мантиссу результата сдвигают арифметическим сдвигом влево до тех пор, пока l=1, вычитая 1 из порядка результата при каждом сдвиге мантиссы влево. Если в результате сложения получена нулевая мантисса, то ее не нормализуют, и порядок обнуляют. Такой результат не является ошибкой, так как это число может участвовать в операции сложения. Для обнаружения нулевого результата на выходе сумматора мантисс используют компаратор, выходной сигнал которого равен 1 тогда и только тогда, когда мантисса суммы равна нулю. Если такая комбинационная схема не используется для проверки значения результата, необходимо поставить ограничитель на число сдвигов мантиссы суммы влево, например, с помощью счетчика. В этом случае счетчику присваивают значение n-1 и выполняют декремент счетчика при каждом сдвиге мантиссы суммы влево. Если после выполнения всех сдвигов признак нарушения нормализации слева продолжает оставаться равным 1, это является критерием нулевого результата. Однако этот способ требует больших затрат времени по сравнению с использованием компаратора.

Читайте также:  Что такое файл манифеста

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

Выполнить сложение двух чисел А= 27410, В=-3910, на Двоичном сумматоре дополнительного кода. Результат представить в нормализованной форме.

Вначале выполним перевод слагаемых в форму с плавающей запятой.

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

Примем следующие параметры данных во внешней памяти: разрядность порядка nП=4+1, т.е. 4 числовых разряда и один знаковый разряд; разрядность мантиссы nM=6+1, т.е. 6числовых разрядов и один знаковый разряд.. Для размещения исходных данных в регистровой памяти операционного автомата потребуется 4+1+6+1=12 разрядов. Допустим, что в схеме ОА имеется два 12-разрядных регистра, в один из которых (РгА) помещают первое слагаемое, и в другой (РгВ) – второе слагаемое. Слагаемые находятся во внешней памяти в дополнительном коде.

Для обработки порядков будем использовать 6-разрядные регистры РгПА и РгПВ, в которые будут загружены порядки операндов из РгА и РгВ в модифицированных кодах, а также 6-разрядный сумматор дополнительного кода СмП. Формат микроопераций загрузки имеет вид:

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

В группу аппаратных средств, предназначенных для обработки мантисс включим два 8-разрядных регистра мантисс со сдвигом вправо, РгМА и РгМВ, в которые загружаются мантиссы слагаемых из РгА и РгВ соответственно, а также сумматор такого же формата. Формат соответствующих микроопераций имеет вид:

РгМА:=РгА[5]|РгА[5-11], РгМВ:= РгВ[5]|РгВ[5-11].

Перед началом работы сумматоры «обнуляются». Последовательность действий, выполняемых при сложении представлена в Табл. 5.

Таблица 5 Пример сложения двоичных чисел с плавающей запятой

СмП РгМА РгМВ СмМ Примечания
00.0000 +00.1001 00.1001 00.100010 11.011001 00.000000 СмП:=0, СмМ:=0, РгМА:=[MA]д м , РгМВ:=[MB]д м , РгПА:=[ПA]д м , РгПВ:=[ПB]д м
СмП:=СмП+РгПА,
+11.1010 СмП:=СмП+ ,
00.0011 +11.1111 00.0010 +11.1111 00.0001 +11.1111 00.0000 11.101100 11.110110 11.111011 СмП=0? НЕТ Начинаем процедуру выравнивания порядков. Sg1СмП=1, следовательно А>B. Порядку результата присваиваем значение ПА. Будем увеличивать содержимое СмП на 1и сдвигать одновременно РгМА вправо на один разряд, пока СмП¹0.
00.000000 +00.100010 00.100010 +11.111011 00.011101 СмП=0? ДА Следовательно, порядки выровнены. Начинаем сложение мантисс. СмМ:=СмМ+РгМА,
СмМ:=СмМ+РгМВ,
00.0000 +00.1001 00.1001 +11.1111 00.1000 00.111010 СмМ[0]=СмМ[2]. Следовательно, нет переполнения разрядной сетки мантиссы. СмМ[0]=СмМ[3], следовательно, имеет место нарушение нормализации слева. Для нормализации результата выполним сдвиг мантиссы результата вправо на 1 разряд влево: СмМ:=L(1)СмМ и вычтем 1 из порядка результата, который предварительно поместим в СмП, выполнив микрооперацию СмП:=РгПА.
СмМ[0]=СмМ[3]? НЕТ Следовательно, нормализация результата закончена. Проверка СмП на переполнение разрядной сетки: СмП[0]=СмП[1]? ДА, Переполнение разрядной сетки отсутствует. Сложение закончено. Результат помещаем в РгА: РгА:=СмП[1-5]|СмМ[1-7],
Завершение операции – передача результата во внешнюю память по шине данных: ШД:=РгА
Читайте также:  Как записать загрузочную флешку через rufus

Результат сложения С=0.111010*2 8 =232. Ошибка сложения (274-39=235) обусловлена недостаточной длиной разрядной сетки, а также потерей значащих разрядов при выполнении выравнивания порядков.

| следующая лекция ==>
Перевод целого двоичного числа в код Д1 | Умножение чисел с фиксированной запятой на ДСДК, схема 1

Дата добавления: 2019-04-03 ; просмотров: 690 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

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

Сложение (вычитание). Операция сложения (вычитания) производится в следующей последовательности.

1. Сравниваются порядки (характеристики) исходных чисел путем их вычитания р=р1-р2. При выполнении этой операции определяется, одинаковый ли порядок имеют исходные слагаемые.

2. Если разность порядков равна нулю, то это значит, что одноименные разряды мантисс имеют одинаковые веса (двоичный порядок). В противном случае должно проводиться выравнивание порядков.

3. Для выравнивания порядков число с меньшим порядком сдвигается вправо на разницу порядков Ар. Младшие выталкиваемые разряды при этом теряются.

4. После выравнивания порядков мантиссы чисел можно складывать (вычитать) в зависимости от требуемой операции. Операция вычитания заменяется операцией сложения в соответствии с данными таблицей 3.1. Действия над слагаемыми производятся в ОК или ДК по общим правилам.

5. Порядок результата берется равным большему порядку.

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

Пример сложения. Сложить два числа А10=+1.375; B10=-0.625.

В нормализованном виде эти числа будут иметь вид:

1. Вычитаем порядки ΔP=P1-p2=1-0=1. В машине эта операция требует операции сложения с преобразованием порядка чисел в дополнительный код:

Определяем, что ΔР≠ 0.

2. Порядок первого числа больше порядка второго числа на единицу. Требуется выравнивание порядков.

3. Для выравнивания порядков необходимо второе число сдвинуть вправо на один разряд.

4. Складываем мантиссы.

Мантисса числа С — положительная.

5. Порядок числа С равен порядку числа с большим порядком, т. е. Р = +1.

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

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

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

1. При умножении (делении) порядки складываются (вычитаются) так, как это делается над числами с фиксированной точкой.

2. При умножении (делении) мантиссы перемножаются (делятся).

3. Знаки произведения (частного) формируются путем сложения знаковых разрядов сомножителей (делимого и делителя). Возможные переносы из знакового разряда игнорируются.

Ссылка на основную публикацию
Сколько секунд видео можно загрузить в инстаграм
Обновлено - 27 января 2020 IGTV — функция, с помощью которой можно выложить длинное видео в Инстаграм продолжительностью от 15...
Секреты работы в word
Все секреты Word. MicrosoftWord – одна из наиболее часто используемых программ. Все мы пользуемся этим приложением, зачастую даже не зная...
Секс во время соревнований
Воздерживаться или не воздерживаться – вот в чем вопрос Джоэл Сидман, кандидат наук Вот что вам нужно знать… Влияние секса...
Сколько символов на странице ворд
Вы можете посмотреть пример стандартной страницы перевода в формате doc. В рынке переводов можно встретить разные варианты определения условной страницы:...
Adblock detector