Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

Формат числа с плавающей запятой рассматривался выше в разделе 1. 1.

В общих чертах алгоритм выполнения операций сложения и вычитаниясоответствует процедурам ручного счета.

Рассмотрим       g = a ± b

            a = A × 10a

            b = B × 10b

            g = S × 10c

A, B, S – нормализованные мантиссы: 1/10 £ A < 1,

10 – основание системы счисления;

a, b, c – порядки.

Выполним этот пример в десятичной системе счисления:

a = -0. 9572 × 10-4   a = -4 А=-0. 9572

b = 0. 1567 × 10-3             b = -3 В= 0. 1567

g = a + b

1) Находится разность порядков:

z = a – b = -4 + 3 = -1  так как z < 1, то a < b

2) Уравнивание порядков чисел происходит за счет того, что сдвигается вправо мантисса числа с меньшим порядком, т. е А = -0. 09572

3) Порядок результата приравнивается порядку большего числа с=в= -3

4) Выполняется сложение мантисс

А = - 0. 09572

+ В = 0. 15670

S = 0. 06098   

5) Нормализация мантиссы, т. е. мантисса сдвигается влево на 1 разряд

S = 0. 60980

6) Коррекция порядка c= – 4

7) Окончательный результат

g =  0. 60980 × 10-4

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

- АЛУ для действий над порядками;

- АЛУ для действий над мантиссами.

Эти АЛУ имеют разную разрядность, различаются алгоритмами, но взаимосвязаны.

1. 7. 1. Алгоритм действий над  порядками

1) Прием из ОЗУ порядков a и b;

2) Сравнение порядков r = a - b;

3) Выравнивание порядков чисел

 если r ≥ 0 ( a ³ b ), то сдвиг B на |r | разрядов вправо, c = a;

иначе ( a < b ) сдвиг A на |r | разрядов влево, c = b.

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

4) при нормализации мантисс одновременно корректируется

порядок результата. Если выполняется сдвиг вправо, то с=с+1.

При сдвиге мантиссы влево на каждый сдвиг производится с=с-1.

Соответствующие сигналы поступают из АЛУ мантисс.

1. 7. 2. Алгоритм действий над мантиссами

1) Прием мантисс A и B из ОЗУ;

2) Выравнивание порядков за счет того, что мантисса меньшего числа сдвигается вправо на количество разрядов, равное | z |.

3) Находится S = A ± B;

4) Выполняется нормализация мантиссы результата. Если

 | S| > 1, то сдвиг вправо S на один разряд, c=c + 1  

 иначе сч. сдв=0

М1: если | S| < 2-1, то сдвиг влево S на один разряд S: =S × 2-1

   и коррекция порядка c=c – 1, иначе | S | ≥ 2-1 и переход к М2,

   иначе если сч. сдв ≥ n, то S = 0 и переход к М2,

иначе переход к М1.

М2: выдача в ОЗУ мантиссы S и порядка с, конец.

     1. 7. 3.  Пример вычисления для двоичных чисел

Будем вычислять γ = α + β

               α = –. 10001 · 10 010             β =. 11110 · 10 001

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

ПП, а над мантиссами – по алгоритму ПД ( см. раздел 3 ).  

1) Выполняем операции над порядками чисел:

[a] п = 0. 010    [b] п = 0. 001 r = |a| – |b| =  . 0 1 0

                                                                       – . 0 0 1

                                                                          . 0 0 1

Так как заем из старшего разряда z0 = 0, то r ≥ 0, а так как

ЗНr = 0, то |a| ≥ |b|, разность порядков r =. 001.

Следовательно, α > β, и порядок результата [c]п=[a]п = 0. 010.

Для выравнивания порядков нужно сдвигать вправо мантиссу

      меньшего числа β.

2) Действия над мантиссами.

[A]п = 1. 10001    [В]п = 0. 11110

Сдвигаем вправо мантиссу В, получаем [В]п 2-1 = 0. 01111

В соответствии с используемым алгоритмом ПД находим DМ.

Так как D =0, ЗНA = 1, ЗНB = 0, то DМ =1. Следовательно,

должно быть выполнено вычитание модулей с использованием

дополнительного кода. Находим псевдосумму в виде

       S* = [| A |]п + [-| B|]д =  1 0 0 0 1

                                        + 1 0 0 0 1

1. 0 0 0 1 0

     Как видно, вышла за пределы разрядной сетки единица      переноса

P0 = 1, это означает, что S* > 0 и |S| =. 0 0 0 1 0

Для нормализации выполняем сдвиг влево на три разряда

      |S| =. 1 0 0 0 0, одновременно корректируется порядок

        с = с – 0 1 1 = - 0 0 1

   Определим знак мантиссы. Так как |А| > |В|, то ЗНS = ЗНА = 1.  

      Окончательный результат

            γ =. 1 0 0 0 0 · 1 0-001  

1. 8. Умножение двоичных чисел

    Существуют две основных группы алгоритмов умножения:

1) умножение в прямых кодах

2) умножение в дополнительных кодах.

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

Рассмотрим операции двоичного умножения в прямых кодах для чисел с фиксированной запятой. Будем вычислять:

    С=А*В;   |A|< 1; |B|< 1;   A≠ 0; B≠ 0.

    |B| = b1*2-1+ b2*2-2+ b3*2-3+............... + bn*2-n

    |C| = |A|*( b1*2-1+ b2*2-2+ b3*2-3+............... + bn*2-n)

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

   Если ЗНА = ЗНВ   то  ЗНС = 0, иначе ЗНС = 1

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

    С= С012+............... +Сn

На каждом шаге умножения вычисляется очередная сумма частных произведений, которую обозначим Si. Так при умножении от старших разрядов множителя первая сумма частных произведений будет

    S1=C0 + C1 и т. д.

При выполнении операции умножения всего возможны четыре алгоритма:

    — умножение от младших разрядов множителя со сдвигом множимого влево;

    — умножение от младших разрядов множителя со сдвигом суммы частных произведений вправо;

    — умножение от старших разрядов множителя со сдвигом множимого вправо;

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

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...