Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
42-50.doc
Скачиваний:
17
Добавлен:
18.09.2019
Размер:
2.18 Mб
Скачать

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

Теория от Попова

Рисунок 44.1 – Представление числа с плавающей запятой (ЧПЗ)

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

  1. Подготовительный этап.

    • Разделение упакованного ЧПЗ на группы М,П,З.

    • Проверка на специальное числовое значение.

  1. Выполнение операции.

    • Приведение порядков.

    • Определение знака результата.

    • Определение мантиссы результата.

    • Определение порядка результата.

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

  1. Заключительный этап.

    • Проверка на специальное числовое значение.

    • Нормализация результата.

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

    • Упаковка полей З,П,М в ЧПЗ.

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

  1. Подготовительный этап

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

  3. Проверка на потерю значимости одного операнда (неточность).

  4. Определение результирующего порядка как максимума.

  5. Сложение мантисс и определение знака результата.

  6. Проверка на переполнение мантиссы. Если да, то сдвигаем мантиссу вправо и увеличиваем порядок на 1.

  7. Проверка на переполнение порядка.

  8. Заключительный этап.

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

  1. Подготовительный этап

  2. Проверка (M1=0 или M2=0). Если да, то Р=0.

  3. Определение порядка результата: Пр = П1+П2-С.

  4. Проверка на переполнение порядка.

  5. Определение мантиссы результата: Мр = М1*М2.

  6. Определение знака результата.

  7. Заключительный этап.

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

  1. Подготовительный этап

  2. Проверка (M1=0 или M2=0). Если деление на ноль, то +/-бесконечность или ошибка.

  3. Определение порядка результата: Пр = П1-П2+С.

  4. Проверка на переполнение порядка.

  5. Определение мантиссы результата: Мр = М1*(1/М2).

  6. Определение знака результата.

  7. Заключительный этап.

Теория из учебника

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

В отличие от общепринятого условия нормализации S - /М/ < 1, в стандарте IEEE 754 используется условие 1 - /М/ < 2.

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

Подготовительный этап

Первой особенностью операционных устройств для чисел с плавающей запятой является то, что в них операции над тремя составляющими чисел с ПЗ (знаками, мантиссами и порядками операндов) выполняются раздельно: блоком обработки знаков (БОЗ), блоком обработки порядков (БОП) и блоком обработки мантисс (БОМ). Для хранения операндов и результата в ОПУ предусмотрены соответствующие регистры. Хотя эти регистры могут быть физически реализованы в виде единых устройств, каждый из них логично рассматривать как совокупность трех регистров: знака, порядка и мантиссы. Таким образом, на этапе загрузки операндов в регистры ОПУ осуществляется «распаковка» чисел с ПЗ, их разбиение на три составляющие. В ходе такой распаковки в старшем разряде регистра мантиссы восстанавливается единица, которая в записи числа отсутствовала (была скрыта).

На предварительном этапе может быть также выполнена проверка на равенство нулю одного или обоих операндов (в стандарте IEEE 754 для представления нулевого значения используется такая запись числа, в которой нулю равны все разряды порядка). Это позволяет исключить ненужные операции. Так, в операциях умножения и деления, если нулю равны множитель, множимое или делимое, в качестве результата сразу же можно принять нулевое значение, обойдя предписанные данными операциями действия.

Заключительный этап

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

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

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

В завершение мантисса результата округляется и, если это предусмотрено форматом ПЗ, из нее удаляется скрытый разряд.

В последней фазе осуществляется "упаковка" всех составляющих результата (знака, порядка и мантиссы), после чего сформированный результат заносится в выходной регистр ОПУ.

Краткое объяснение от Алекса:

Любое число с плавающей запятой представляет собой совокупность 3-х элементов: знак числа, порядок, и мантисса.

Знак мантиссы определяет отрицательное число или положительное. 0 соответствует положительному, 1 – отрицательному.

Мантисса – по сути, представляет собой само число, то есть значащую часть числа. Нормализованная мантисса в 10-чной системе – это число, приведенное к формату – одна цифра до точки. Нормализованная мантисса в 2-чной системе – это число, приведенное к формату 1 перед точкой + остальная часть после точки.

Т.е. мантисса – представляет собой запись двоичного числа, целой и дробной части без точки.

Порядок – означает степень сомножителя, определяющего систему счисления, при умножении мантиссы на который мы получим наше число. То есть, в 10-чной системе в качестве сомножителя выступает 10, возведенное в степень порядка. В 2-чной системе, это соответственно будет 2, возведенное в степень порядка. Порядок складывается из: степень сомножителя + смещение порядка. Смещение порядка равно: C=2n-1-1, где n – количество разрядов, используемых для записи порядка.

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

Т.е., порядок «+5» можно представить, как 10000101, а порядок «-5» представить как 01111011.

Таким образом, любое число с плавающей запятой представляется в формате, показанном на рисунке 44.1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]