Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


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




 

Р – порядок

М – мантисса

 

А=М*2Р

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

 

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

 

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

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

 

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

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

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

0 0,1 1001 – нормализованное число

1 1,0 011 – нормализованное число

 

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

Мс(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.

 

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

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

Даны:

А=МА*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 операции.

 

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

 

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

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

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

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

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

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

Ai+Bi+Pi+1<=19;

 

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

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

 

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

  1. 0£Ci£9 Ci

0010+0011=0101

Pi=0

  1. 10£Ci£15 Ci

1001+0011=1100

Pi=0

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

+

P-1.0010 - Ci

 

  1. 16£Ci£19 Ci 0001

1000+1001=0001 +

Pi=1 0110

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





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


Дата добавления: 2015-02-12; Мы поможем в написании ваших работ!; просмотров: 2355 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

2684 - | 2489 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.