русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Довжини на доповняльні коди одинарного формату 2 страница


Дата додавання: 2015-01-08; переглядів: 946.


частки і наявності ознаки ПП частки при діленні (+МА)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 = МА – (МВ×22d3 – (МВ×21d2 – МВ.

Таким чином, частковий залишок А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 .

Зазначимо, що доповняльний код нерухомого розширеного коду дільника ВР можна представити в такому скороченому вигляді:

= (+b3b2b1000) = 0 b3b2b1000 = [ 0 b3b2b1]× 23;

( +1) = + 1 = 1 111 + 1 =

= 1 000 = [ 1 ]×23 ,

де [ 0 b3b2b1], [ 1 ] – відповідно доповняльний код додатного і від’ємного дільника за чотирирозрядним форматом.

 

А7 ВP7
5 4 3 2 1 7 6 5 4 3 2 1 7 6 5 4 3 2 1
X X X X X ND X X X X 0 ND = NAÅNB = 0 ND X X X 0 0   = NA4ÅNB = 0 ПП = ND Å dn = 0 ND X X 0 0 1   = NA3Å NB = 1 ND X 0 0 1 1   = NA2Å NB = 1 ND 0 0 1 1 0   = NA1Å NB = 0   0 0 0 1 1 0 1 NA
 
 


1 1 1 0 0 0 0

 
 


1 1 1 1 1 0 1

NA4

 
 


0 0 0 1 0 0 0

 

 
 


0 0 0 0 1 0 1

NA3

 
 


1 1 1 1 1 0 0

       
 
 
   


0 0 0 0 0 0 1

NA2

 
 


1 1 1 1 1 1 0

 
 


1 1 1 1 1 1 1

NA1

 

 
 


0 0 0 0 0 1 0

       
 
 
   


0 0 0 0 0 0 1

C

0 0 1 0 0 0 0 NB NA =NB   = NB BP 0 0 0 1 0 0 0 NA4 ≠ NB   = NB BP 0 0 0 0 1 0 0 +1) NA3=NB   = NB BP 0 0 0 0 0 1 0 NA2=NB = NA1 ≠ (ND Å NB)     = C  

 

Рисунок 3.22 – Приклад ділення (+МА) на (+МВ) за алгоритмом «б»

 

У зв’язку з цим за алгоритмом «а» крайні незначущі нулі у нерухомому дільнику ВР=[+b3b2b1 000] доцільно відкинути, але, природно, при виконанні арифметичних операцій (3.102) і (3.104) числова змінна ВР=[+b3b2b1] повинна вважатися поліномом:

[+(b3 ×25 + b2 ×24 + b1 ×23)],

де 25, 24, 23 – вага розрядів старшої тріади розширеного формату нерухомого дільника ВР = [+ (b3b2b1 000),].


<== попередня лекція | наступна лекція ==>
Довжини на доповняльні коди одинарного формату 1 страница | Довжини на доповняльні коди одинарного формату 3 страница


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн