ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6853
Скачиваний: 22
222
Тепер розглянемо приклад:
Х=0101 0101;Y=01101011.
Результати проміжних обчислень наведені в табл. 6.9.
Таким чином
0101 0101 .01101011 = 0010 0011 1000 0111.
6.4.5. Ділення двійкових чисел
Ділення X:Y передбачає визначення частки Q і залишку R відповідно до рівності
X = Q *Y + R,
де X - ділене, Y - дільник.
Алгоритм ділення в комп'ютерах виконується як послідовність операцій віднімання дільника Y від часткового залишку Ri, початкове значення якого рівне значенню діленого X. Знаковий розряд частки визначається за знаками діленого і дільника аналогічно операції множення (табл. 6.7). Приймемо, що значення X і Y завжди відповідають вимозі X<Y.
Існує два варіанти виконання операції ділення двійкових чисел:
■ зі зсувом залишків ліворуч відповідно до рекурентної формули
При цьому і-й розряд частки визначається з ви-
разу q = NOT (p.);
■ зі зсувом дільника праворуч відповідно до рекурентної формули
і-й розряд частки, причому q. = Sign R.
На n-му кроці ділення в обох випадках визначається значення n-го розряду частки і залишок.
223
Блок-схема алгоритму ділення за першим варіантом, який має ширше використанш наведена на рис. 6.22.
Ділення може бути виконано двома способами: з відновленням і без відновлення залишку.
При діленні з відновленням залишку послідовно віднімається дільник від діленого і проводиться аналіз значення поточного залишку. Якщо після чергового віднімання залишок позитивний, то відповідний розряд частки рівний одиниці. При від'ємному залишку розряд частки рівний нулю. В цьому випадку виконується коригуюче збільшення дільника до поточного залишку (відновлення залишку), він зсувається на один розряд ліворуч і процес повторюється. Обчислення проводяться за формулою першого варіанту, де q. = 1, якщо R. -Y>= 0 і q. = 0, якщо R. -Y<0. На рис. 6.23 наведено два перші яруси графа, описаного алгоритму ділення.
224
Розглянемо приклад. Нехай
X = 0.10002
= 0.510
і Y = 0.11002
= 0.7510
. Тут виконана умова X<Y.
Поетапні результати виконання
ділення відповідно до блок-схеми
алгоритму (рис. 6.22) наступні:
Таким чином
маємо Q =
q1q2q3q4= 0.1010.
У методі ділення без відновлення залишку віднімання, що викликало появу від'ємного залишку при визначенні значення розряду частки, еквівалентне двом відніманням при визначенні сусіднього молодшого розряду частки. Ділення виконується за тим же співвідношенням зі зсувом залишків ліворуч відповідно до рекурентної формули
R1 = 2(Ri-1 - piY),
де рi = 1, якщо (Ri-1 - Y) > = 0, та рi = -1, якщо (Ri-1- Y) < 0, R0= X, і=1,2,...n. При цьому і-й розряд частки визначається з виразу qi = Sign Ri.
Ділення чисел, які представлені в оберненому та доповняльному кодах, можна виконувати за правилами ділення в прямих кодах при відповідному перетворенні операн-дів в цей код. Розглянемо виконання операції ділення без відновлення залишків чисел, представлених доповняльними кодами. У цьому випадку ділення зводиться до послідовності додавань і віднімань дільника від діленого, а потім часток і часткових залишків і їх зсуву на розряд ліворуч за наступними виразами:
Ri = 2Ri-1 - Y, при Sign Ri = Sign Y;
Ri = 2Ri-1 + Y, при Sign Ri =/ Sign Y,
для i=l,2,...,n+l при 2R0 = X та Sign R0 = Sign X. Тут Sign Ri - знак і-го часткового залишку, Sign Y, Sign X - відповідно знаки Y та Х.
При цьому розряди частки визначаються наступним чином:
qi = 1, якщо Sign Ri = Sign Y,
qi = 0, якщо Sign Ri =/ Sign Y.
Операція виконується за n+1 кроків і дає значення частки в доповняльному коді.
6.4.6. Арифметичні операції над двійковими числами у форматі з рухомою комою
Як вже було показано в попередньому розділі, формат з рухомою комою передбачає наявність двох частин числа - порядку (Р) та мантиси (М). Числа X та Y, які мають відповідно мантиси Мx та Мy і порядки Рx та Рy, можна представити у вигляді X = Мx 2Рх, Y = Мy 2Pу.
Для забезпечення однозначного і максимально точного представлення чисел прийнято представляти число з рухомою комою в так званому нормалізованому вигляді. Якщо виконується нерівність 1< |М| < 2 (старший двійковий розряд мантиси дорівнює 1), то відповідно до стандарту ІЕЕЕ-754 вважається, що число представлене в нормалізованому вигляді (в багатьох попередніх комп'ютерах нормалізованим вважалося число, коли 0.5 < |М| < 1). Таким чином, у двійкового нормалізованого числа у форматі з рухомою комою мантиса є двійковим числом, в якому перший розряд рівний одиниці, після якої розміщено дробове число (або лише дробове число, в старшому розряді якого
225
завжди стоїть 1). Потрібно зауважити, що ці твердження відносяться до двійкових чисел у форматі з рухомою комою, основою порядку яких є число 2. Якщо основою порядку є числа 4, 8, 16 і т. д., то в цьому випадку число є нормалізованим, коли ненульовим є його перший розряд в четвірковій, вісімковій або шістнадцятковій системі числення відповідно. Операція приведення числа до нормалізованого вигляду називається нормалізацією.
При виконанні додавання та віднімання двійкових чисел з рухомою комою порядки операндів вирівнюються, а мантиси додаються. Порядки вирівнюються збільшенням порядку меншого операнду до значення порядку більшого операнду. Цей порядок є порядком результату. Щоб при вирівнюванні порядків величина операнда не змінилася, його мантиса одночасно зменшується шляхом зсуву вправо на відповідну збільшенню порядку кількість розрядів. Після виконання вирівнювання порядків виникають додаткові молодші розряди мантиси, які до, або після, додавання відкидаються чи заокруглюються.
Додавання та віднімання двійкових чисел з рухомою комою можна представити виразом:
Наведемо приклад:
Мх=1.000 1000; Рх=0110; Му=1.110 1001; Ру=0100.
Оскільки перший операнд більший, порядок числа Y приводиться до порядку числа Х:Му=0.011 1010; Ру=0110.
Далі мантиси додаються:
MS=MX+MY= 1.000 1000+0.011 1010 =10.0000010; Ps=0110.
Тепер проводиться нормалізація: Мs =1.000 0001; Ps=0111.
Множення чисел у форматі з рухомою комою описується наступним співвідношенням:
При виконанні множення порядки операндів додаються, а мантиси перемножуються. Після перемноження мантис виникають додаткові молодші розряди мантиси, які відкидаються або заокруглюються.
Розглянемо приклад:
Мх=1.000 1000; Рх=0110; Му=1.110 1001; Рy =0100.
Тоді MD=1.000 1000* 1.110 1001=0.111 1011 1100 1000; PD=0110+0100=1010.
Після нормалізації: MD= 1.111 0111; PD=1001.
Ділення чисел у форматі з рухомою комою описується наступним співвідношенням:
При виконанні ділення порядки операндів віднімаються, а мантиси діляться.
Розглянемо приклад:
Мх=1.111 1100; Рх=0111; Му=1.100 0000; Ру=0011.
Тоді MD=1.111 1100 / 1.100 0000=0.10101; PD=0111-0011=0100.
Після нормалізації: MD=1.010 1000; PD=0101.
226
6.5. Операції обчислення елементарних функцій
Значна частина задач обробки даних розв'язується з використанням операцій обчислення тригонометричних і гіперболічних функцій, функцій типу ехр х, ln х, х2 й інших, операцій повороту вектора і перетворення координат з однієї системи в іншу, наприклад, з декартової в полярну. При цьому в деяких областях, наприклад, в радіонавігації, сейсморозвідці, гідроакустиці, вказані операції займають основну частина обчислень. Вирішення таких задач вимагає значних витрат часу Тому спочатку в спеціалізованих, а останнім часом і в універсальних комп'ютерах, до складу системи команд вводять операції обчислення елементарних функцій
В процесі розробки комп'ютерів та математичних методів обчислень було створено велику кількість методів обчислення елементарних функцій. Найчастіше в універсальних комп'ютерах використовується обчислення елементарних функцій за допомогою різного виду апроксимуючих виразів та аналітичних ітераційних методів
6.5.1. Розклад функції в ряд та використання ітеративних обчислень
Для обчислення елементарних функцій часто використовується їх розклад в нескінченний ряд, який містить лише елементарні арифметичні та логічні операції, або використовуються ітеративні співвідношення. Кількість членів ряду чи ітерацій вибирається залежно від необхідної точності, яка до того ж обмежується розрядною сіткою.
Для прикладу можна навести обчислення квадратного кореня за допомогою ітеративної формули Ньютона
AM = (N/Aі + Aі)/2,
де: Аі - і-те наближення. А0 можна вибрати довільним, N - число, з якого треба добути корінь.
Щоб перевірити правильність попробуємо добути корінь з 36:
6.5.2. Обчислення елементарних функцій методом "цифра за цифрою"
Протягом останніх десятиліть багато робіт було присвячено ефективному ітерацій-ному алгоритму обчислення елементарних функцій, який найчастіше називають методом "цифра за цифрою". Обчислення елементарних функцій методом "цифра за цифрою" зводиться до виконання двох етапів. На першому етапі аргумент представляється або у вигляді суми п доданків ln(l+fі а-i ), або fі arctg а-i, або fі arth а-i, або в вигляді добутку п співмножників (1- fі а-i). Тут і - номер ітерації. На цьому етапі визначаються значення fі,