Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

745 / Л.Р.№7 / Лабораторна робота #7

.doc
Скачиваний:
6
Добавлен:
22.02.2016
Размер:
90.62 Кб
Скачать

Лабораторна робота № 7

ПРОГРАМНЕ МОДЕЛЮВАННЯ МАШИННИХ АЛГОРИТМІВ ДІЛЕННЯ ЧИСЕЛ З ПЛАВАЮЧОЮ КРАПКОЮ

Мета роботи: Розглянути машинні алгоритми виконання операції ділення над числами у форматі з плаваючою крапкою.

Теоретичні відомості:

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

Ділення з відновленням залишку. Нехай ділене X і дільник Y є правильними дробами представлені в прямому коді в n-розрядній сітці. На першому кроці дільник Y вираховується з діленого X і визначається знак нульового залишку R0. R0 означає, що відповідна цифра частки відповідає розряду цілих, тобто 20. Якщо R0 > 0, то в розряді цілих встановлюється 1, формується ознака переповнення і операція ділення припиняється. В протилежному випадку в розряд цілих встановлюється цифра 0, і відбувається відновлення діленого Y шляхом додавання до залишку дільника X. Далі відбувається зсув відновленого діленого на один розряд ліворуч і повторне віднімання дільника. Знак таким чином отриманого залишку R1 визначає першу цифру після коми. Якщо залишок додатній, то цифра частки рівна 1, в протилежному випадку 0. При отриманому додатному залишку його знову зсувають на один розряд ліворуч та виконують віднімання дільника для визначення наступної цифри частки. Якщо ж залишок був від’ємним, то потрібно відновити залишок шляхом додавання до нього дільника. Такі дії повторюють до отримання потрібної кількості цифр.

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

У випадку коли буде вироблено ознаку переповнення розрядної сітки, необхідно ділене X зсунути праворуч на один розряд і знову розпочати ділення. Після завершення операції частку зсувають ліворуч на те число розрядів, на яке зсувалось праворуч ділене.

Розглянемо приклад.

Нехай X = 1.4375

Y = 3.8125

Необхідно обчислити Z = X*Y.

X2 = 1.0111

Y2 = 11.1101

Число X представлене у форматі SINGLE:

0 01111111 011100000000000000000000

Число Y представлене у форматі SINGLE:

0 10000000 111010000000000000000000

Знаходимо характеристику результату 01111111 – 10000000 + 01111111 = 01111110

Знаходимо знак мантиси 0  0 = 0

Виконуємо ділення мантис за алгоритмом з відновленням залишку:

Пояснення

Операції, операнди, результати

Цифри частки

1

2

3

X

-Y

R0

0|101110000000000000000000

1|000011000000000000000000

1|110001000000000000000000

0,

Відновлення

Зсув

-Y

R1

0|101110000000000000000000

1|011100000000000000000000

1|000011000000000000000000

0|011111000000000000000000

0,1

Зсув

-Y

R2

0|111110000000000000000000

1|000011000000000000000000

0|000001000000000000000000

0,11

Зсув

-Y

R3

0|000010000000000000000000

1|000011000000000000000000

1|000101000000000000000000

0,110

Відновлення

Зсув

-Y

R4

0|000010000000000000000000

0|000100000000000000000000

1|000011000000000000000000

1|000111000000000000000000

0,1100

Відновлення

Зсув

-Y

R5

0|000100000000000000000000

0|001000000000000000000000

1|000011000000000000000000

1|001011000000000000000000

0,11000

1

2

3

Відновлення

Зсув

-Y

R6

0|001000000000000000000000

0|010000000000000000000000

1|000011000000000000000000

1|010011000000000000000000

0,110000

Відновлення

Зсув

-Y

R7

0|010000000000000000000000

0|100000000000000000000000

1|000011000000000000000000

1|100011000000000000000000

0,1100000

Відновлення

Зсув

-Y

R8

0|100000000000000000000000

1|000000000000000000000000

1|000011000000000000000000

0|000011000000000000000000

0,11000001

Зсув

-Y

R9

0|000110000000000000000000

1|000011000000000000000000

1|001001000000000000000000

0,110000010

Відновлення

Зсув

-Y

R10

0|000110000000000000000000

0|001100000000000000000000

1|000011000000000000000000

1|001111000000000000000000

0,1100000100

Відновлення

Зсув

-Y

R11

0|001100000000000000000000

0|011000000000000000000000

1|000011000000000000000000

1|011011000000000000000000

0,11000001000

Відновлення

Зсув

-Y

R12

0|011000000000000000000000

1|110000000000000000000000

1|000011000000000000000000

1|110011000000000000000000

0,110000010000

Відновлення

Зсув

-Y

R13

0|110000000000000000000000

1|100000000000000000000000

1|000011000000000000000000

1|100011000000000000000000

0,1100000100001

Зсув

-Y

R14

1|000110000000000000000000

1|000011000000000000000000

0|001001000000000000000000

0,11000001000011

Зсув

-Y

R15

0|010010000000000000000000

1|000011000000000000000000

1|010101000000000000000000

0,110000010000110

Відновлення

Зсув

-Y

R16

0|010010000000000000000000

0|100100000000000000000000

1|000011000000000000000000

1|100111000000000000000000

0,1100000100001100

Відновлення

Зсув

-Y

R17

0|100100000000000000000000

1|001000000000000000000000

1|000011000000000000000000

0|001011000000000000000000

0,11000001000011001

Зсув

-Y

R18

0|010110000000000000000000

1|000011000000000000000000

1|011001000000000000000000

0,110000010000110010

1

2

3

Відновлення

Зсув

-Y

R19

0|010110000000000000000000

0|101100000000000000000000

1|000011000000000000000000

1|101111000000000000000000

0,1100000100001100100

Відновлення

Зсув

-Y

R20

0|101100000000000000000000

1|011000000000000000000000

1|000011000000000000000000

0|011011000000000000000000

0,11000001000011001001

Зсув

-Y

R21

0|110110000000000000000000

1|000011000000000000000000

1|111001000000000000000000

0,110000010000110010010

Відновлення

Зсув

-Y

R22

0|110110000000000000000000

1|101100000000000000000000

1|000011000000000000000000

0|101111000000000000000000

0,1100000100001100100101

Зсув

-Y

R23

1|011110000000000000000000

1|000011000000000000000000

0|100001000000000000000000

0,11000001000011001001011

Зсув

-Y

R24

1|000010000000000000000000

1|000011000000000000000000

0|000101000000000000000000

0,110000010000110010010111

Частка Z у форматі SINGLE має вигляд:

0 01111110 10000010000110010010111

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

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

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

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

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

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

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

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

  1. Ділене: 45.6, дільник: -124.94

  2. Ділене: -67, дільник: -4.14

  3. Ділене: -5.6, дільник: 4

  4. Ділене: -11.78, дільник: 2.2

  5. Ділене: 4.14, дільник: -1.4

  6. Ділене: 15.16, дільник: -1.9

  7. Ділене: -25.5, дільник: -24.4

  8. Ділене: -8.7, дільник: 12.4

  9. Ділене: 5.5, дільник: -5.6

  10. Ділене: 12.1, дільник: -65.5

Зауваження: Звіт повинен містити титульну сторінки відповідно до зразка (див. додаток л.р. №1), мету, завдання роботи, варіант завдання, хід роботи та висновки.

Контрольні запитання:

  1. Сформулюйте загальне правило ділення чисел з плаваючою крапкою.

  2. У якому випадку може виникнути денормалізація частки при діленні чисел з плаваючою крапкою?

  3. Денормалізаця якого виду може виникнути при діленні чисел з плаваючою крапкою?

  4. Яким чином відбувається нормалізація денормалізованої частки?

  5. Сформулюйте машинний алгоритм ділення з відновленням залишку чисел з плаваючою крапкою.

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

  7. У якому випадку генерується ознака переповнення розрядної сітки при виконанні операції ділення чисел у форматі з плаваючою крапкою?

  8. Які дії виконують при виникненні переповнення розрядної сітки?

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

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

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