Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
745 / Л.Р.№5 / Лабораторна робота #5.doc
Скачиваний:
2
Добавлен:
22.02.2016
Размер:
94.72 Кб
Скачать

Етапи алгебраїчного додавання чисел з плаваючою крапкою:

1. Урівноваження порядків доданків.

Менший порядок збільшується до більшого, а мантиса перетвореного числа зсувається вправо на відповідну кількість розрядів:

Знак і модуль різниці будуть визначати відповідно, який з доданків треба перетворити і на скільки розрядів слід зсунути їх мантису.

Якщо Z=0, то нічого не перетворюється, а при Z>0 перетворюється число В, інакше перетворюється число А.

При цьому молодші розряди числа, що перетворюється, можуть пропадати, в наслідок чого в доданок, зсунутий вправо, вноситься похибка.

2. Відбувається перетворення мантис доданків в один з спеціальних кодів (додатковий або обернений).

3. Виконується додавання мантис за правилами додавання чисел з фіксованою крапкою у відповідному спеціальному коді.

4. Потім результат переводиться в прямий код відбувається нормалізація результатів (при необхідності) до нього додається загальний порядок доданків і виконується округлення мантиси результату.

В залежності від абсолютних величин мантис доданків сума може одержуватися:

  • нормалізованою;

  • денормалізованою вправо;

  • денормалізованою вліво (переповнення).

Треба відмітити, що додані нормалізовані числа завжди мають 1 в р-1 розряді, а від'ємні в оберненому та додатковому кодах 0 в р-1.

Приклади. Нехай для подання чисел з плаваючою крапкою буде: n=8, m=4.

Знаковий розряд мантиси

Знаковий розряд порядка

-1

-2

-3

-4

-5

-6

-7

2

1

0

Sa

-1

-2

-3

-4

-5

-6

-7

Sm

m 2

m 1

m 0

n=8

m=4

і всі операції будуть виконуватися в додатковому коді.

а) А=-0,101012101

В=0,110012011

Апр=1|1010100||0|101

Впр=0|1100100||0|011

Z=ma-mb=102=2>0.

mзаг=0|101, ma>mb, необхідно зробити зсув мантіси числа B вправо на два розряди:

Впр=0|0011001||0|101

b'пр=0|0011001=в'дод

адод= 1|0101100

+

в

співпадання числа в знаковому розряді і в старшому розряді – ознака денормалізації вправо.

дод= 0|0011001

сдод = 1|1000101

соб=1|1000110

спр=1|0111011

спр=1|0111011||0|101 – мантиса денормалізована вправо на один розряд, тому необхідно зробити корекцію порядку:

m’=mзаг-1=101-1=100

Т

відсікання, оскільки в результаті значущих цифр на одну більше ніж у вхідних даних!

оді спр=1|111011||0|100

С=-0,1110112100

б) А=-0,101012101

В=-0,110012100

mзаг=101, тому в мантисі В треба зробити зсув на 1 порядок вправо.

Апр=1|1010100||0|101

Впр=1|1100100||0|100

Впр'=1|0110010||0|101

адод= 1|0101100

в

переповнення (від'ємне) розрядної сітки, тому має місце денормалізація результата вліво.

дод= 1|1001110

сдод=10|1111010

При цьому треба мантису результату зсунути на один розряд вправо, а порядок збільшити на 1.

Сдод=1|0111101||0|110

Соб= 1|0111100

Спр= 1|1000011 (є відсікання)

С=-0,100012110

Зауваження.

1. Слід відмітити, що додатні нормалізовані числа завжди мають 1 у розряді , а відємні числа записані в інтервальному коді (додатковому або оберненому), мають 0 в розряді. Тому у нормалізованих чисел значення цифр розрядів з вагою р0 і р-1 не співпадають ні для додатних чисел, ні для зображень від'ємних чисел. В наслідок цього неспівпадання цифр у знакових розрядах свідчить про денормалізацію вліво (переповнення), а співпадання цифр знакового і старшого розрядів мантиси – про денормалізацію вправо.

2. При денормалізації результата вліво, мантиса результата (разом із знаковим розрядом) зсувається на один розряд вправо, а порядок – збільшується на один розряд, оскільки сума двох мантис може бути денормалізована вліво не більше ніж на один розряд.

3. При денормалізації вправо мантиса зсувається вліво (без знакового розряду) до появи в старшому розряді 1, при с>0, або 0 при с<0, а з порядку віднімається число одиниць, яке дорівнює кількості зсувів мантиси.

4. Кількість зсувів, як правило обмежується кількістю розрядів суматора, оскільки процес зсуву може бути нескінченним, якщо с=0. (мантиса =0). В цьому випадку після (n-1) зсувів результат покладається рівним машинному 0. Обнулення відбувається і тоді коли порядок числа внаслідок зсуву мантиси вліво зменшиться до числа меншого ніж допустиме число.

5. При додаванні може відбутися справжнє переповнення розрядної сітки числа, тобто переповнення розрядної сітки порядку. В даному випадку в ЕОМ формується сигнал про переповнення порядку.

Віднімання чисел у форматі з плаваючою крапкою відбувається шляхом додавання першого доданка до другого зі знаком мінус. Тобто потрібно змінити знак другого доданку на протилежний і виконати вищеописаний алгоритм додавання.

В системах команд сучасних ЕОМ є великій набір команд на виконання операцій додавання і віднімання як з довгими, так і з короткими операндами, з нормалізацією і без нормалізації.

Завдання на виконання лабораторної роботи.

  1. Обрати свій номер варіанта згідно з останньою цифрою у номері залікової книжки (цифра „0” відповідає десятому варіантові).

  2. Проаналізувати текст паскаль-програми у файлі lab5.pas і визначити її призначення.

  3. Змінити програму у відповідності до варіанту.

  4. Скомпілювати програму та запустити на виконання.

  5. Підставити власні вхідні значення та проаналізувати результати роботи програми.

  6. Оформити звіт та подати його викладачу разом з результатами виконання роботи.

Соседние файлы в папке Л.Р.№5