logo
AK

1.8.1. Реалізація ділення чисел з фіксованою крапкою в прямому коді

Процес отримання цифри частки завжди починається зі старших розрядів.

1. Ділення із зсувом залишків вліво з подвоєнням залишків. Дільник нерухомий. В якості початкового залишку приймається ділене .

2. Ділення із зсувом дільника вправо. Залишки нерухомі.

Обидва варіанти можуть виконуватися в двох модифікаціях - з відновленням залишків і без.

Ділення із зсувом залишків вліво, з відновленням залишків.

При виконанні ділення за варіантом 1 включаються наступні цикли:

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

Ділене x=9/16

Дільник y=11/16

-y[додатков]=1,0101

Частка Z=13/16

В якості першого залишку беремо x, |x|<|y|

Структурна схема ділення за варіантом 1

БД, який працює за варіантом 1, містить 3 регістри: РгХ - залишків, Рг Y - дільника, Рг Z - приватного; комбінаційний суматор, мультиплексор. В РгХ, Рг Z організовані ланцюги лівого зсуву на 1 розряд. Можливе використання косої передачі в РгХ на 1 розряд вліво.

Х повинен бути менше Y.

Ділення по 2 варіанту виконується шляхом зсуву дільника вправо, тобто шляхом зменшення дільника на кожному кроці в 2 рази. Блок поділу, що працює по 2 варіанту повинен містити 3 регістри: Х - для запису залишків, Y - дільника, Z - частки. В Рг Z повинні бути організовані ланцюги лівого зсуву на 1 розряд, в Рг Y - правого зсуву. В цьому   блоці поділу і Рг Y,   і РгХ, і комбінаційний суматор повинні мати подвійну кількість розрядів. Блок розподілу по 2 варіанту вимагає більших апаратних витрат, ніж по 1 варіанту.

Методи ділення без відновлення залишків

Відновлення залишків є нерегулярною операцією, її не можна передбачити,   вона може виникнути на будь-якому кроці, тому її доводитися чекати завжди. У зв'язку з цьому в комп’терах використовують методи без відновлення залишків.

Нехай на i циклі залишок виявився менше нуля, при цьому i цифра частки дорівнює нулю. Треба виконати відновлення залишків.

r i <0 r i = 2 (r i + y) - y = 2 r i + y

Якщо при діленні на i вийшов r i <0, необхідно зсунути його вліво і додати до нього дільник. Цей метод полягає в тому, що при r i> 0 ми після його зсуву віднімаємо y, а при r i <0 - додаємо. При діленні по 2 варіанту відновлення залишків можна уникнути: якщо r i <0, то треба зсунути на 1 розряд вправо дільник, який потім буде додаватися до цього від’ємного залишку.

Двійкове ділення в додатковому коді.

При діленні в ДК знаковий розряд діленого і дільника бере участь в розподілі нарівні з цифровими.   Якщо знаки чергового залишку і дільника збігаються,   то в молодший розряд частки записується 1, після чого залишок і частка зрушують на 1 розряд вліво і до збільшеного залишку додають дільник із зворотним знаком. Якщо знаки не збігаються, в молодший розряд частки записується 0, залишок і частка зсуваються на 1 розряд вліво, після чого до зрушеного залишку додається дільник зі своїм знаком. Отримання цифр частки виконується протягом 2,5 машинних циклів, потім виконується корекція результату, яка реалізується шляхом додавання   1 в знаковий розряд частки та (n +1)-й розряд частки, який потім відкидається. Коригуюча одиниця в знаковому розряді дозволяє отримати правильний знаковий розряд. З метою збереження правильних знаків розподіл здійснюється з використанням модифікованого ДК.