Операции в АЛУ на двоичными числами с плавающей точкой

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru

Р – порядок

М – мантисса

А=М*2Р

Если Р определяет диапазон представления чисел в ЭВМ, то М – точность представления чисел в ЭВМ.

С:=АqВ; qÎ{+,-,*,/}

Необходимое оборудование:

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru

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

Операнды (ОП) поступают из памяти в ОА в нормализованном виде; знаковые разряды дублируются только на ОЭ. Результат операции тоже должен быть в нормализованном виде.

Нормализованное число: 1/2£|М|<1.

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

00,11001 – нормализованное число

11,0011 – нормализованное число

Требования для нормализованных чисел:

Мс(0)ÅМс(2)=1

Мс(0)ÅМс(1)=0.

Виды нарушения нормализации:

1. Нарушение нормализации влево(переполнение мантиссы).

01,110

01 – для положительных чисел

10 – для отрицательных чисел

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

2. Нарушение нормализации вправо(знаковые разряды мантиссы равны, но не выполняется условие: Мс(0)ÅМс(2)=1).

00.00010

11.110

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

-1/210=11,1002 – нормализованное число, не выполняется условие Мс(0)ÅМс(2)=1;

+1/210=00,1002

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

1. Аварийное завершение операции(прерывание).

Мантисса=0, а порядок любой. Ситуация такая называется потеря значимости.

Fпз:=1; Р:=0.

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

Fпп :=1.

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

Fип :=1.

Микропрограмма нормализации чисел:

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru

Алгоритм сложения чисел с плавающей точкой.

Даны:

А=МА*2Ра

В=МВ*2Рв

Найти:

С=МС*2Рс

Операнды и результат должны быть в нормализованном виде.

  1. Проверка особых ситуаций:

Если МВ=0, то С:=А

Если МА=0, то С:=В

Переход к концу.

  1. Выравнивание порядков.

0,5*103+0,4*102=0,5*103+0,04*103=0,54*103.

Вычисление разности порядков: РС:=РАВ.

Если |РС|³n+1, то сумма принимается равной числу с большим порядком:

Если РС=0, то С:=А;

Если РС=1, то С:=В.

Переход к концу.

Если РС¹0, то производится уравнивание порядков слагаемых, путем приведения числа с меньшим порядком к числу с большим порядком. Уравнивание порядков выполняется арифметическим сдвигом мантиссы числа с меньшим порядком вправо на число разрядов равное |РС|.

Если ЗнРс=1, то преобразуется МА.

Если ЗнРс=0, то преобразуется МВ.

Сдвиг осуществляется следующим образом:

При каждом элементарном сдвиге на 1 разряд из РС вычитается 1, если сдвигается МВ, и прибавляется 1, если сдвигается МА.

Выход из цикла по РС=0.

Если МА и МВ представлены в прямом коде, то старшие освобождающиеся при сдвиге информационные разряды заполняются нулями; если в инверсном коде, то знаковыми разрядами.

  1. Мантиссы, полученные после уравнивания порядков, складываются как числа с фиксированной точкой.

МС:=МАВ.

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

РС:=max(РА½РВ).

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

  1. Округление мантиссы результата осуществляется прибавлением 1 к n+2 разряду сумматора мантисс.
  2. Нормализация результата (см. алгоритм выше).

Исключительные ситуации при сложении:

· Потеря значимости;

· Переполнение порядка при нормализации со сдвигом вправо;

· Исчезновение порядка при нормализации со сдвигом влево.

Умножение чисел с плавающей точкой.

С=А*В

Даны:

РА, МА, РВ, МВ.

Найти:

РС, МС.

  1. Порядки складываются по правилам сложения чисел с фиксированной точкой. Мантиссы перемножаются по правилам умножения чисел с фиксированной точкой.
  2. Младшие разряды произведения, выдвигаемые в такте сдвига из сумматора мантисс, не сохраняются, кроме n+2 разряда.
  3. Результат округляется добавлением 1 в n+2 разряд МС и нормализуется.

Исключительные ситуации:

    • Исчезновение порядка при нормализации со сдвигом влево;
    • Переполнение порядков, т.к. имеет место сложение порядков в алгоритме.

Деление чисел с плавающей точкой.

С=А/В.

РСАВ;

МСАВ.

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

Исключительные ситуации:

· Деление на ноль;

    • Исчезновение порядка при нормализации со сдвигом влево;

· Переполнение порядков, т.к. имеет место сложение порядков в алгоритме.

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

В классический алгоритм деления вносятся незначительные изменения:

· МА перед выполнением деления с фиксированной точкой сдвигается влево на один разряд, порядок увеличивается на 1.

· Предусматривается нормализация со сдвигом влево.

Выполнение операций десятичной арифметики в АЛУ.

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

Десятичные числа представляются в АЛУ в двоично-десятичном коде.

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru

Сложение двух десятичных чисел сводится к последовательной выработке сумм вида:

PiCi=Ai+Bi+Pi+1 , где

Ai и Bi – четырехразрядные коды десятичных цифр слагаемых;

Pi+1 – десятичный перенос(перенос со сдвигом 10) из предыдущего младшего десятичного разряда суммы;

Pi – десятичный перенос в следующий старший разряд суммы;

Ci – 4-х разрядный двоичный код цифр суммы

Ai+Bi+Pi+1<=19;

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru

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

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

Три случая возникающие при сложении десятичных чисел на двоичном сумматоре:

  1. 0£Ci£9 Ci

0010+0011=0101

Pi=0

  1. 10£Ci£15 Ci

1001+0011=1100

Pi=0

надо: Pi=1, Ci=0010

+

Операции в АЛУ на двоичными числами с плавающей точкой - student2.ru P-1.0010 - Ci

  1. 16£Ci£19 Ci 0001

1000+1001=0001 +

Pi=1 0110

Если Ci³10, то всегда нужна коррекция.

Наши рекомендации