Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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і,