Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Програмне моделювання машинних алгоритмів додавання та віднімання чисел з плаваючою крапкою
Лабораторна робота № 5
Мета роботи: Розглянути машинні алгоритми виконання операцій додавання та віднімання над числами у форматі з плаваючою крапкою.
Теоретичні відомості: Будь-яке число Х в позиційній однорідній системі числення з основою р можна записати як X = M*PK, де М називають мантисою числа Х, а К – порядком цього числа (наприклад, X = 0, 4*108, то М = 0, 4, Р = 10, К = 8). Інакше порядок числа називають експонентою. Власне кажучи, число PK є масштабним коефіцієнтом, на який необхідно помножити число М для того, щоб уникнути переповнення розрядної сітки. У форматі представлення чисел з плаваючою крапкою, виділяються 3 частини: знак числа (представляється вкрай лівим бітом формату); мантиса числа (представляється у вигляді правильного або неправильного двійкового дробу); порядок числа (представляється в загальному вигляді як ціле число зі знаком). Значення числа А з плаваючою крапкою, представляється у виді: Апк=(sign A)-1*Ma*SPa де sign A - знак 0 - «+», 1 - «-» SPa - порядок числа А, S - підстава порядку. Число з плаваючою крапкою, називається нормалізованим, якщо старша цифра його мантиси значуща (не 0), у противному випадку число називається не нормалізованим. Основними особливостями представлення чисел з плаваючою крапкою, у сучасних ЕОМ є: 1) Мантиса числа незалежно від його знака представляється в прямому коді 2) Порядок числа представляється не в явному виді як знакове ціле, а зі зсувом у виді беззнакового цілого числа. Ця особливість полегшує обробку порядку при виконанні арифметичних операцій. Величина зсуву дорівнює або вазі старшого розряду порядку, або на одиницю менше. Зміщений порядок прийнятий називати характеристикою числа. 3) Як основа порядку використовується значення S=2. 4) У переважній більшості випадків прийняте використання нормалізованих чисел з метою підвищення їхньої точності. 5) При використанні основи порядку, рівній двом, нормалізоване число містить обов'язкову одиницю в старшому розряді мантиси. Це дозволяє не представляти його в явному виді у форматі, що дозволяє збільшити точність числа. Подібне приховання старшого розряду мантиси називається схованим розрядом (схованою одиницею). 6) В ЕОМ для представлення чисел з плаваючою крапкою, прийнято використовувати кілька форматів (як правило, щоб задовольнити суперечливим вимогам підвищення точності чисел і підвищення швидкості їхньої обробки). Ці формати мають найменування: а) короткий (одинарної точності) - 32 біта; б) довгий (подвійної точності) - 64 біта; в) розширений (розширеної точності) - 80 біт. Перехід від короткого формату до розширеного супроводжується підвищенням розрядності як мантиси так і порядку.
Короткий формат (В мові програмування PASCAL має назву SINGLE): 31 30 24 23 0
Подвійний формат (В мові програмування PASCAL має назву DOUBLE):
63 62 53 52 0
Розширений формат (В мові програмування PASCAL має назву EXTENDED):
79 78 64 63 0
У мові програмування Pascal існує ще один тип даних з плаваючою крапкою REAL, який має довжину 6 байт і відрізняється від типу SINGLE тим, що має мантису на 2 байти довшу.
47 46 40 39 0
Схована одиниця має місце в короткому і довгому форматах, у розширеному форматі вона представляється в явному виді. Величина зсуву визначається як вага старшого розряду характеристики, зменшена на одиницю.
Додавання чисел з плаваючою крапкою. Нехай задано два числа у нормалізованому вигляді: де, - мантиси у формі з фіксованою крапкою перед старшим розрядом у нормалізованій формі , знакові числа з фіксованою крапкою після молодшого розряду. Треба знайти результат алгебраїчного додавання цих чисел: С = А + В, при цьому, зрозуміло, що С = срmс – число з плаваючою крапкою, оскільки для того, щоб знайти суму двох чисел з різними порядками їх треба попередньо звести до спільного порядку, тобто перетворити один з доданків, наприклад, В таким чином (mзаг - mа) Після цього можна степінь основи системи числення у загальному степені винести за дужки і виконати лише додавання мантис:
Наприклад.
Мантиса числа В після перетворення повинна бути правильним дробом з тим, щоб при додаванні нічим не відрізнятися від звичайних (неперетворених) мантис. Тому перетворенню підлягає завжди менший доданок, оскільки у протилежному випадку відбувається переповнення розрядної сітки мантиси числа, яке перетворюється. При цьому треба зробити " перенесення" крапки вліво на ma–mb – позицій (зсув мантиси вправо). При цьому частина розрядів мантиси може втратитись. Тому арифметичні дії над числами з плаваючою крапкою по своїй суті є наближеними, а не точними. При додаванні чисел в нормальній формі можна виділити 4 етапи. Етапи алгебраїчного додавання чисел з плаваючою крапкою: 1. Урівноваження порядків доданків. Менший порядок збільшується до більшого, а мантиса перетвореного числа зсувається вправо на відповідну кількість розрядів: Знак і модуль різниці будуть визначати відповідно, який з доданків треба перетворити і на скільки розрядів слід зсунути їх мантису. Якщо Z = 0, то нічого не перетворюється, а при Z> 0 перетворюється число В, інакше перетворюється число А. При цьому молодші розряди числа, що перетворюється, можуть пропадати, в наслідок чого в доданок, зсунутий вправо, вноситься похибка. 2. Відбувається перетворення мантис доданків в один з спеціальних кодів (додатковий або обернений). 3. Виконується додавання мантис за правилами додавання чисел з фіксованою крапкою у відповідному спеціальному коді. 4. Потім результат переводиться в прямий код відбувається нормалізація результатів (при необхідності) до нього додається загальний порядок доданків і виконується округлення мантиси результату. В залежності від абсолютних величин мантис доданків сума може одержуватися: – нормалізованою; – денормалізованою вправо; – денормалізованою вліво (переповнення). Треба відмітити, що додані нормалізовані числа завжди мають 1 в р-1 розряді, а від'ємні в оберненому та додатковому кодах 0 в р-1. Приклади. Нехай для подання чисел з плаваючою крапкою буде: 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 +
с дод = 1|1000101
с об=1|1000110 с пр=1|0111011 с пр=1|0111011||0|101 – мантиса денормалізована вправо на один розряд, тому необхідно зробити корекцію порядку: m’ = m заг-1=101-1=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
с дод=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) Оформити звіт та подати його викладачу разом з результатами виконання роботи.
|