Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Нормализация чисел

Число называется нормализованным, если его мантисса удовлетворяет условию r -1 ≤ |MA|<1.

Нормализация – процесс, относящийся к числам, записанным в форме с плавающей запятой. Число A =0,00101…1 – денормализованное (признак нарушения нормализации вправо). Для нормализации число нужно сдвинуть в сторону, противоположную направлению нарушения нормализации. Таким образом, в примере мантиссу числа А необходимо сдвинуть влево на два разряда. При этом порядок необходимо уменьшить на два. Различают два вида сдвигов: простой и модифицированный.

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

Исходная комбинация   Сдвиг влево   Сдвиг вправо
0,a1a2….an a1,a2….an0 0,0a1a2….an-1
1,a1a2….an a1,a2….anα 0,1a1a2….an-1

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

Исходная комбинация   Сдвиг влево   Сдвиг вправо
00,a1a2….an 0a1,a2….an0 00,0a1a2….an-1
01,a1a2….an 1a1,a2….an0 00,1a1a2….an-1
10,a1a2….an 0a1,a2….anα 1,1a1a2….an-1
11,a1a2….an 1a1,a2….anα 1,1a1a2….an-1

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

 

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

A=±mAr±pA,

B=±mBr±pB.

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

1. Производится сравнение порядков pA и pB. Для этого из порядка числа A вычитается порядок числа B. Разность p=pA-pB указывает, на сколько разрядов требуется сдвинуть вправо мантиссу числа с меньшим порядком. Если p=pA-pB>0, то pA>pB и для выравнивания порядков необходимо сдвинуть вправо мантиссу MB. Если p=pA-pB<0, то pB>pA и для выравнивания порядков необходимо сдвинуть вправо мантиссу MA. Если p=pA-pB=0, то pA=pB и порядки слагаемых выравнивать не требуется.

2. Выполняется сдвиг соответствующей мантиссы до тех пор, пока p≠0.

3. Выполняется сложение мантисс MA и MB по правилу сложения правильных дробей.

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

Пример: МА=-0,10110 рА=+0111

МВ=-0,11011 рВ=+0101

[MA]доп=1,01010 p= [рА]доп+[-рВ]доп= 0.0111

[MB]доп=1,00101 + 1.1011

1 0.0010

Так как [рАВ]доп>0, то сдвигу подвергается мантисса МВ.

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

[MB]доп=1,00101 0.0010

[-1]доп= 1.1111

[MB]доп=1, 1 0010 1 0.0001

[MB]доп=1, 11 001 01 [-1]доп= 1.1111

0.0000

[MB]доп=1,11001 01

[MA]доп= 1,01010

11,00011 01 = [МА+В] рА+В=max(рА,pB)=pA=+0.0111

Полученный результат нормализован. После выполнения операции округления получим [МА+В]= 1,00011.

 




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


Дата добавления: 2014-12-26; Просмотров: 1984; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.