RSS    

   Лабораторная работа: Дослідження виконання арифметичних операцій у форматі з рухомою комою

1.  Додавання мантис;

Додавання мантис із вирівненими порядками виконується згідно правил додавання чисел з фіксованою комою. Зазвичай використовується модифікований доповнювальний код. (Пригадайте правила подання від’ємних чисел з використанням доповнювального або оберненого модифікованого коду).

3. Переведення результату додавання мантис у прямий код.

У результаті додавання мантис може виникнути один з трьох випадків:

а). Виникає переповнення розрядної сітки комп’ютера (порушення нормалізації вправо). Ознакою переповнення є невизначенність знакових розрядів, коли результат неможливо віднести ні до додатних, ні до від’ємних чисел (код 01 або 10). У цьому випадку необхідно виконати корекцію результату додавання мантис шляхом його зсуву вправо на один розряд і одночасного збільшення порядку на 1.

Наприклад, після додавання мантис отримуємо число 01,00001. Нормалізуємо його зсувом вправо на один розряд і одночасно збільшуємо порядок на 1. В результаті отримуємо:

(А + В)доп = 00,100001 * 10к+1

Переводимо у прямий код: (А + В)пр = 00,100001 * 10к+1.

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

б). Результат від’ємний. Переведення результату додавання мантис у прямий код віконується шляхом виконання другого доповнення (тобто, виконується інверсія результату і до отриманого коду додається 1 у молодший розряд) або другого обертання (тобто, виконується інверсія результату);

в). Результат додатний. У прямому коді додатний результат залишається без змін;

4. Нормалізація результату.

Виконується тоді, коли після переведення у прямий код у отриманому результаті відбувається порушення нормалізації вправо, тобто з правого боку від коми є один або декілька нулів. Це порушення коректується зсувом мантиси результату вліво і одночасне зменшення порядку на кількість розрядів зсуву мантиси до повної нормалізації мантиси.

1.  Остаточний результат додавання двох чисел з рухомою комою: сума мантис – це мантиса результату, порядок результату – вирівняний порядок доданків, із врахуванням всіх проведених корекцій. .

Розглянемо приклади виконання операції додавання двійкових чисел з рухомою комою. Всі арифметичні дії будемо виконувати у модифікованому доповнювальному коді.

Приклад 1: Додати A = - 0,1101 * 10101 i B = + 0,1100 * 10011.

а) Вирівнюємо порядки.. Спочатку, визначаємо арифметичну різницю між порядками, віднімаючи від значення порядку числа А значення порядку числа В. При цьому операцію віднімання замінюємо операцією додавання у доповнювальному модифікованому коді.

рА – рВ = рА + (– рВ) = (pA доп(м) = 00,101) + (pB доп(м) = 11,101) = 00,010 – різниця порядків

Аналіз отриманої різниці:

·  знак різниці показує, що порядок числа А більше порядку числа В;

·  порядки відрізняються на дві одиниці.

Через те, що рА > pB, зсуваємо мантису числа В вправо на два розряди, тобто

МВ пр= 00,001100 і Впр= 00,001100 * 10101.

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

б) Переводимо мантиси обох чисел у модифікований доповнювальний код (в межах 4-х розрядів):

МА пр = 11,1101 МА доп(М) =.11,0011

МВ пр = 00,0011 МВ доп(М) =.00,0011

в) Додаємо модифіковані доповнювальні коди мантис чисел А та В і отримуємо результат у модифікованому доповнювальному коді:

(А + В)доп (М) = 11,0011 + 00,0011 = 11,0110

г) Аналіз результату додавання мантис починається із знакових розрядів. Знакові розряди показують, що переповнення розрядної сітки у нас не виникло. Результат – від'ємний, тому переводимо мантису результату у прямий код шляхом виконання другого доповнення і дописуємо спільний порядок:

(А + В)пр (М) = (11,1001 + 00,0001) * 10 101 = 11,1010 * 10101 - остаточний результат.

При переведенні у прямий код знак результату не міняється.

Подальший аналіз показує, що порушення нормалізації результату вправо немає.

Приклад 2. : Додати двійкові числа: А = + 0,10100 * 10101 та В = - 0,10110 * 10100 .

а) Для вирівнювання порядків доданків необхідно із порядку числа А відняти порядок числа В. Віднімання замінимо додаванням у модифікованому доповняльному коді.

(рА доп(м)= 00,101) + (рВ доп(м) = 11,100) = ,101 – 00,100 = 00,101 + (- 00,100) = 00,101 + (11,011 + 00,001) = 00,101 + 1,100 = 00,001

Через те, що рА > pB на +1, виконуємо зсув мантиси числа В вправо на 1 розряд.

МВ пр = 11,010110 і В = 11,010110 * 10101.

б) Переведемо мантиси доданків у модифікований доповняльний код.

МА пр = 00,10100 МА доп(М) = 00,10100.

МВ пр = 11,010110 МВ доп(М) = 11,101010.

в) Додаємо мантиси чисел А і В у модифікованих доповняльних кодах:

(МА доп(М) = 00,10100) + (МВ доп(М) = 11,10101) = 00,01001

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

(МА + МВ) пр(м) = 00,01001

Як видно, виникло порушення нормалізації вправо, тому що вправо від коми розряд дорівнює 0.

д) Виконуємо нормалізацію результату, тобто зсув мантиси ліворуч на 1 розряд з одночасним відповідним зменшенням порядку:

(А + В)пр = 0,1001 * 10100 – остаточний результат.


2.Хід роботи:

·  Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних) двійкових чисел із рухомою комою у модифікованому доповнювальному коді в інструкціях симулятора DeComp. Числа подаються у форматі:

Знак порядку Знак мантиси Порядок Мантиса
2 розряди 2 розряди 4 розряди 8 розрядів

 У алгоритмі передбачити аналіз отриманого результату на:

·  переповнення розрядної сітки (порушення нормалізації вліво);

·  наявність порушення нормалізації вправо;

·  від'ємний результат

 Передбачити відповідні заходи з корекції результату.

Блок-схема написаної програми

Попередньо в такі комірки заношу такі дані:

350 хххх хххх хххх хххх Число а
351 хххх хххх хххх хххх Число b
352 1100 0000 0000 0000 Маска для знаку порядку
353 0000 1111 0000 0000 Маска для порядку
354 0000 0000 0000 0000 Порядок числа а
355 0000 0000 0000 0000 Знак порадка числа а
356 0000 0000 0000 0000 Порядок числа b
357 0000 0000 0000 0000 Знак порядку числа b
358 0000 0000 0000 0000 Порядок зі знаком числа a
359 0000 0000 0000 0000 Порядок зі знаком числа b
360 0000 0000 0000 0001 Одиниця для додавання
361 0000 0000 0000 0010 Нормалізація порядку
362 0011 1100 0000 0000 Маска для нормалізації інвертації порядка
363 0000 0000 0000 0000 Мантиса числа a
364 0000 0000 0000 0000 Мантиса числа b
365 0000 0000 0000 0000 Знак мантиси числа a
366 0000 0000 0000 0000 Знак мантиси числа b
367 0011 0000 0000 0000 маска для відокремлення знаку мантиси
368 0000 0000 1111 1111 Маска для відокремлення мантиси
369 0000 0000 0000 0000 Мантиса зі знаком числа a
370 0000 0000 0000 0000 Мантиса зі знаком числа a
371 0000 0000 0000 0000 Різниця порядків
372 0011 1110 0000 0000 Маска для взяття різниці порядків
373 1011 1111 1111 1111 Обернена маска для взяття модуля різниці
374 0000 0000 0000 1001 Нормалізація різниці порядків
375 0000 0000 0000 0101 Підготовка мантиси
376 0000 0000 0000 0101 Підготовка мантиси
377 0000 0000 0000 0010 Нормалізація порядку
378 0000 0000 1111 1111 Маска для виділення мантиси
379 1000 0000 0000 0000 Відновлення знаку мантиси
380 0000 0000 0000 0000 Сума двох чисел
381 0000 0000 0000 0000 Мантиса результату
382 0000 0000 0000 0000 Знак мантиси результату
383 0000 0000 0000 0000 Порядок результату
384 0000 0000 0000 0000 Знак порядоку результату
385 0011 1111 1110 0000 Маска для вибору мантиси результату
386 0000 0000 0000 0110 Зсув мантиси до молодших розрядів
387 0000 0000 0000 0000 Результат (Зн. П, Зн.М, Порядок, Мантиса)
388 0000 0100 0000 0000 Додавання одиниці для переведення порядку
389 0000 0010 0000 0000 Одиниця для переведення різниці порядків
390 0000 0000 0010 0000 Додавання одиниці для переведення мантиси

Код програми:

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.