Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Програмне моделювання машинних алгоритмів ділення чисел з плаваючою крапкою






Лабораторна робота № 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

 

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

 

Пояснення Операції, операнди, результати Цифри частки
     
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
     
Відновлення Зсув -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

 

 

     
Відновлення Зсув -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) Оформити звіт та подати його викладачу разом з результатами виконання роботи.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.