частки і наявності ознаки ПП частки при діленні (+МА)DK на (+МВ)DK
А4 = (- МА4); ( 3.78 )
ВР = (+ МВ3), ( 3.79 )
де МА4 = |МВР – МА| – модуль часткового залишку діленого у поперед-ньому циклі за ПП = 0;
МВР3 = (МВР/2) – стан модуля дільника після логічного зсуву на один біт вправо стану подвійного розширеного модуля дільника МВР;
Згідно з (3.65) при діленні (+МА)DK на (+МВ)DK для визначення цифри d
частки справедливі співвідношення:
1, якщо А3 ≥ 0;
0, якщо А3 < 0, ( 3.80 )
де А3 = (МА – МВР/2) = (МА – МВР3); МВР3 = МВР/2.
Із урахуванням (3.78) і (3.79) перетворимо вираз А3, записуючи його у вигляді:
А3 = МА – МВР3 = (-МА4 + МВР – МВР3) =
= ((-МА4) + МВР – МВР/2)) = (-МА4) + (МВР/2) =
= (-МА4) + (МВР3) = А4 + ВР3. ( 3.81 )
Із цих міркувань випливає, що доповняльний код залишку А3 потрібно обчислювати за формулою:
А3
= (128 + А4 + ВР3) m128 = (А4
+ ВР3
) m128 . ( 3.82 )
Згідно з властивостями доповняльного коду маємо:
1, якщо А3 < 0;
0, якщо А3 ≥ 0, ( 3.83 )
де NA3 – знак доповняльного коду числової змінної А3.
За умови (3.83) нерівності (3.80) набувають вигляду:
1, якщо NA3 = 0;
0, якщо NA3 = 1. ( 3.84 )
Через те, що при діленні (+МА)DK на (+МВ)DK знак дільника NВ = 0, цифру d
згідно з (3.84) можна пов’язати зі знаком NВ співвідношенням:
d
= d3 =
( 3.85 )
При визначені наступної цифри частки d
початковий стан змінних залежить від значення цифри d3 частки, визначеної у попередньому циклі.
Якщо d3 = 0, то початковий стан числових змінних при визначенні позиції d
частки набуває вигляду:
А3 (d3 = 0) = (-МА3); ( 3.86 )
ВР2 = (+ МВР2), ( 3.87 )
де МА3 = |МА – МВР3| - ( 3.88 )
- модуль залишку діленого А3 за d3 = 0 (МА < МВР3);
МВР2 = МВР3/2 - ( 3.89 )
- стан модуля дільника після логічного зсуву на один біт вправо модуля МВ3 (стану дільника у попередньому циклі).
Таким чином, згідно з (3.86) і (3.87) залишок діленого для визначення позиції d
частки потрібно обчислювати за співвідношенням:
А2 = МА – МВР2 = (- МА3 + МВР3) – МВР2 =
= (- МА3) + МВР2 = А3 + ВР2.
Звідси дістанемо:
А2
(d3 = 0) = (А3
+ ВР2
) m128 ,
де А3
= (-МА3)
; ВР2
= (+МВР2)
.
Згідно з властивостями доповняльного коду маємо:
0, якщо A2 ≥ 0;
1, якщо A2 < 0, ( 3.90 )
де NA2 – знак доповняльного коду залишку А2.
Тоді нерівності (3.90) можна подати у вигляді
1, якщо NA2 = 0;
0, якщо NA2 = 1.
При діленні (+МА)DK на (+MB)DK знак дільника NB=0, тому обчислення позиції d
частки можна пов’язати зі знаком дільника NB таким чином:
d
(d3 = 0) =
( 3.91 )
Якщо цифра частки d3 = 1, то початковий стан сукупності числових змінних при визначенні позиції d
частки набуває вигляду:
А3(d3 = 1) = (+МА3);
ВР2 = (+МВР2),
де МА3 = (МА – МВР3) – ( 3.92 )
- модуль залишку А3 за d3 = 1 (МА > МВР3);
МВР2 = МВР3/2 - ( 3.93 )
– стан модуля дільника після логічного зсуву на один біт вправо МВ3 (стану дільника у попередньому циклі).
Згідно з (3.65), значення цифри d
частки за ND=0 потрібно обчислю-вати за нерівностями виду:
1, якщо A2 ≥ 0;
0, якщо A2 < 1,
де А2 = (МА – МВР3 – МВР2). ( 3.94 )
Із урахуванням (3.92) і (3.93) перетворимо (3.94) наступним чином:
А2 = МА3 – МВР2 = (+МА3) + (-МВР2) = А3+ (-ВР2) = (А3 – ВР2).
Із цих міркувань випливає, що доповняльний код залишку А2 потрібно визначати за співвідношенням:
А2
(d3 = 1) = (128 + А3 – ВР2)m128 =
= (А3
+
+ 1) m128. ( 3.95 )
Згідно властивостей доповняльного коду маємо:
0, якщо A2 ≥ 0;
1, якщо A2 < 0,
де NA2 – знак числової змінної А2
.
Тоді нерівності (3.94) можна подати у вигляді:
0, якщо NA2 = 1;
1, якщо NA2 = 0.
При діленні (+МА) на (+МВ) знак дільника NB=0, тому визначення позиції d
частки можна пов’язати зі знаком NB співвідношенням:
d
(d3 = 1) =
. ( 3.96 )
Узагальнюючи (3.90), (3.95), (3.91) і (3.96), отримаємо наступну сукупність рекурентних формул для визначення цифри d
частки при діленні (+МА)DK на (+MB)DK :
(А3
+ (BP2)
)m128 при NA3 ≠ NB;
(А3
+
+1)m128 при NA3 = NB; ( 3.97 )
d
=
, ( 3.98 )
де А3
- залишок діленого для визначення позиції d
частки у попередньому циклі;
(BP2)
=(BP3/2)
; ВР3=(+МВР/2) – стан додатного дільника у по-передньому циклі операції ділення при визначенні позиції d
частки;
МВР – початковий стан подвійного розширеного формату модуля дільника.
Співвідношення (3.97) і (3.98) для визначення залишку А2
і обчис-лення цифри d
частки згідно з (3.74), (3.77), (3.82) і (3.85) функціонально збігається з відповідними залежностями для визначення (А4)DK, (А3)DK, d
і d
, тобто являють собою узагальнену форму алгоритму ділення (+МА)DK на (+МВ)DK. Згідно з цим логічним законом дістанемо:
[А2
+ (BP1)
]m128 при NA2 ≠ NB;
(А2
+
+1)m128 при NA2 = NB; ( 3.99 ) d
=
, (3.100)
де (BP1)
= (BP2)
/2.
Розглянемо тепер задачу визначення остачі від ділення (+МА)DK на (+МВ)DK.
Згідно з правилами арифметики у загальному випадку аргументи і результат операції ділення пов’язані співвідношенням:
МА = МВ*MD + C,
де МА, МВ, MD, С – відповідно цілочислові модулі діленого, дільника, частки і остачі.
Таким чином, остача операції ділення С повинна визначатися за формулою:
С = МА – МВ* MD.
У розгорнутій формі маємо:
С = МА – МВ*(d3×22 + d 2×21 + d1×20),
Звідси дістанемо:
МА – МВ*(d3×22 + d 2×21 + 1), якщо d1= 1;
МА – МВ*(d3×22 + d 2×21), якщо d1= 0.
Відомо, що в останньому циклі ділення частковий залишок діленого А1 обчислюється за формулою:
А1 = МА – (МВ×22)×d3 – (МВ×21)× d2 – МВ.
Таким чином, частковий залишок А1 діленого у загальному випадку взаємопов’язаний з остачею С співвідношенням:
С, якщо d1= 1, тобто за А1≥ 0;
С-МВ, якщо d1= 0, тобто за А1< 0.
Звідси випливає:
А1, якщо А1≥ 0;
А1 + МВ, якщо А1< 0.
Отже, при діленні (+МА)DK на (+МВ) DK, тобто за NB = 0 і ND = 0, доповняльний код остачі операції ділення повинен визначатися за нерівностями виду:
А1
, якщо NA1 = (ND Å NB);
(А1
+B
)m128, якщо NA1≠(NDÅNB), (3.101)
де (ND Å NB) = NA – первинний знак діленого; B
= (+МВ)
.
Приклади ділення (+МА)DK на (+МВ) DK згідно з логічними виразами (3.97) – (3.101) за алгоритмом «б» подано на рис. 3.22.
Якщо цифри частки визначаються за алгоритмом «а», тобто шляхом зсуву вліво часткових залишків діленого при нерухомому дільнику, то залежності (3.97) – (3.100) набувають вигляду:
(2×А3
+ BР
)m128 при NA3 ≠ NB;
(2×А3
+
+1)m128 при NA3 = NB; (3.102) d
=
; (3.103)
(2×А2
+ BР
)m128 при NA2 ≠ NB;
(2×А2
+
+1)m128 при NA2 = NB; (3.104) d
=
, (3.105)
де ВР = (+МВ000) – розширений подвійний формат нерухомого дільника;
МВ = b3b2b1 – рядок цифр первинного модуля дільника при діленні [+МА(6/1)]DK на [+МВ(3/1)]DK .
Зазначимо, що доповняльний код нерухомого розширеного коду дільника ВР можна представити в такому скороченому вигляді:
BР
= (+b3b2b1000)
= 0 b3b2b1000 = [ 0 b3b2b1]× 23;
(
+1) =
+ 1 = 1
111 + 1 =
= 1
000 = [ 1
]×23 ,
де [ 0 b3b2b1], [ 1
] – відповідно доповняльний код додатного і від’ємного дільника за чотирирозрядним форматом.
Рисунок 3.22 – Приклад ділення (+МА) DК на (+МВ)DК за алгоритмом «б»
У зв’язку з цим за алгоритмом «а» крайні незначущі нулі у нерухомому дільнику ВР=[+b3b2b1 000] доцільно відкинути, але, природно, при виконанні арифметичних операцій (3.102) і (3.104) числова змінна ВР=[+b3b2b1] повинна вважатися поліномом:
[+(b3 ×25 + b2 ×24 + b1 ×23)],
де 25, 24, 23 – вага розрядів старшої тріади розширеного формату нерухомого дільника ВР = [+ (b3b2b1 000),].