logo
AOM / Мельник А

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. =SignR.

На 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=SignRi.

Ділення чисел, які представлені в оберненому та доповняльному кодах, можна ви­конувати за правилами ділення в прямих кодах при відповідному перетворенні операн-дів в цей код. Розглянемо виконання операції ділення без відновлення залишків чисел, представлених доповняльними кодами. У цьому випадку ділення зводиться до послідов­ності додавань і віднімань дільника від діленого, а потім часток і часткових залишків і їх зсуву на розряд ліворуч за наступними виразами:

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кроків і дає значення частки в доповняльному коді.