русс | укр

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

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


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


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


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


Для ілюстрації функціональних особливостей канонічного алгоритму операції ділення доповняльних кодів (DК) побудуємо блок ділення, в якому аргументи і результат визначаються за наступними форматами:

А = NА a a a a a a ;

B = NB b b b ; D = ND d d d ;

C = NC c c c ,

де NA , NB , ND , NC - знак доповняльного коду відповідно діленого, дільника, частки, остачі;

a a a a a a , b b b , d d d , c c c – цифрова частина доповняльного коду відповідного діленого, дільника, частки і остачі.

Відомо, що за додатних значень частки її зображення в доповняльному і прямому кодах подаються однаково:

D = D = 0 d3 d2 d1 ( 3.60 )

де 0 - значення знакового розряду додатної частки;

d3 d2 d1 – значення цифрових розрядів додатної частки у прямому виді.

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

Для від’ємних значень частки прямий і доповняльний код частки пов’язані більш складними співвідношеннями. У цьому випадку, щоб пристосувати загальні алгоритми визначення значень цифр частки в прямому виді до утворення результату в доповняльному коді, спочатку доцільно сформувати обернений до прямих значень рядок цифр частки, тобто обернений код цифрової частини частки, а на завершальному етапі – розшукуваний доповняльний код від’ємної частки. Алгоритм перетворення оберненого коду від’ємної частки в еквівалентний доповняльний код випливає з базових формул визначення оберненого і доповняльного кодів:

D = 15 + D;

D = 16 + D = (15 + D) + 1,

де D – двійковий код від’ємної частки.

Звідси дістанемо:

D = D + 1, ( 3.61 )

де D - обернений код від’ємної частки .

Таким чином, згідно з (3.61) для обчислення доповняльного коду від’ємної частки D попередньо потрібно визначити інверсні значення цифро-вих розрядів модуля частки, а потім виконати корекцію (виправлення) утвореного оберненого коду шляхом додавання одиниці до його молодших розрядів.

Узагальнюючи (3.60) і (3.61) маємо:

D = ND d d d + ND, (3.62)

де ND = (NA Å NB) – знак результату (частки);

(d d d ) – цифрові розряди оберненого коду частки;

d3d2d1, якщо ND = 0;

, якщо ND = 1,

де (d3d2d1) – цифрові розряди модуля частки ( MD = |D| = d3d2d1);

( ) – порозрядна інверсія цифрових розрядів модуля частки.

Таким чином, до визначення цифр частки як за алгоритмом (3.60), так і за алгоритмом (3.61), спочатку потрібно знайти знак результату на підставі звичайного співвідношення для знаків:

ND = (NA Å NB), ( 3.63 )

тобто 1, якщо NA ≠ NB;

0, якщо NA = NB.

На наступному рівні програми ділення А на В встановлюється можливість переповнення розрядної сітки цифрової частини частки. Для цього, як зазначалося раніше, у пробному циклі обчислюється розшир розрядної сітки частки D. У зв’язку з цим, доповняльний код частки формує-ться у розширеному форматі:

(DP) = ND d d d d + ND, ( 3.64 )

де (d d d d ) – цифрова частина розширеного формату оберненого коду частки;

dn d3d2d1, якщо ND = 0; ( 3.65 )

, якщо ND = 1; ( 3.66 )

d – розшир частки для виявлення ознаки переповнення розрядної сітки результату;

(DP) - розширений п’ятипозиційний формат доповняльного коду частки.

У залежності від знака частки ND і ознаки переповнення частки (d ) у розширеному форматі частки (3.64) можуть формуватися комбінації двійко-вих кодів:

ND d ND

(DP) ( d = 0, D ≥ 0) = 0 0 d d d + 0 ;

ND d ND

(DP) ( d = 0, D < 0) = 1 1 d d d + 1 ;

 

ND d ND

(DP) ( d = 1, D ≥ 0) = 0 1 d d d + 0 ;

ND d ND

(DP) ( d = 1, D < 0) = 1 0 d d d + 1 .

Звідси випливає, що ознаку переповнення оберненого коду частки ППОК у загальному випадку припустимо обчислювати за співвідношенням:

ППОК = (ND Å d ), ( 3.67 )

Очевидно, що згідно з властивостями оберненого коду D ознака переповнення оберненого коду ППОК не фіксується, якщо значення частки змінюється в замкнутому інтервалі:

- 111(-710) ≤ D ≤ +111 (+710).

В доповняльному коді частки обумовленого формату (D ) перетво-рення розрядної сітки частки не повинно виникати в діапазоні зміни аргумента:

- 1000(-810) ≤ D ≤ +111 (+710).

З наведеного випливає, що при утворенні частки D=-1000(-810), тобто за

ND d d d d ND d d d d

= 1 0 1 1 1 + 1 = 1 1 0 0 0

ознака переповнення доповняльного коду ППDК не повинна формуватися за ППОК = ND = 1 0 = 1.

Таким чином, за від’ємних значень частки у загальному випадку ознака переповнення оберненого коду частки ППОК після формування слушного результату в доповняльному коді на завершальному етапі операції ділення повинна уточнюватися за співвідношенням:

ППDК = ND . ( 3.68 )

Тепер докладно розглянемо алгоритми визначення розширеного п’яти-позиційного формату частки для довільного сполучення знаків діленого А і дільника В.

Спочатку припустімо, що ділене А > 0 (NA=0) і дільник В > 0 (NВ=0).

За цих умов залишок діленого у пробному кроці операції ділення визначається числовими змінними:

А = + МА(6/1); ( 3.69 )

ВР = + МВР(6/1), ( 3.70 )

де А, ВР – відповідно числові змінні діленого і розширеного формату дільника;

МА(6/1), МВР(6/1) = МВ(3/1) 000 – відповідно модулі діленого А і подвійного дільника В;

МВ(3/1) = b3b2b1 – рядок цифр модуля дільника за первинним форматом.

У даному випадку NA = NВ = 0 і знак частки ND = NA Å NВ = 0, тому згідно з (3.65) розшир частки визначається за співвідношенням:

= dn = d4.

Як відомо, четвертий розряд (розшир) частки d4 = 1 у тому випадку, коли

МА(6/1) ≥ МВР(6/1). ( 3.71 )

Отже, розшир частки dn = d4 потрібно обчислювати за нерівностями виду:

1, якщо А4 ≥ 0;

0, якщо А4 < 0, ( 3.72 )

де А4 = [МА(6/1) – МВР(6/1)] – залишок діленого у пробному кроці операції ділення.

Для визначення залишку діленого А4 через доповняльний код і перетворимо (3.72) наступним чином:

А4 = (+МА(6/1)) – (+МВР(6/1)).

Тоді згідно з ( 3.68) і (3.69) дістанемо:

А4 = А – ВР. ( 3.73 )

Із цих міркувань випливає, що доповняльний код залишку діленого А4 потрібно обчислювати за співвідношенням:

= ( - )m128 = ( + 128 - )m128 =

= ( + 127 - + 1)m128 = ( + +1)m128. ( 3.74 )

Згідно властивостей доповняльного коду маємо:

0, якщо А4 ≥ 0;

1, якщо А4 < 0, ( 3.75 )

де NA4 – знак числової змінної .

Із урахуванням (3.75) нерівності (3.72) можна подати у вигляді:

1, якщо NА4 = 0;

0, якщо NА4 = 1. ( 3.76 )

Через те, що при діленні (+МА) на (+МВ) знак дільника NB = 0, зна-чення розширу dn може бути пов’язано зі знаком дільника NB нерівностями виду:

1, якщо NА4 = NB;

0, якщо NА4 ≠ NB.

Звідси дістанемо:

d4 (dn ) = . ( 3.77 )

Приклади визначення розширу частки d і ознаки переповнення обер-неного коду частки при діленні (+МА)DK на (+МВ)DK подано на рис.3.20-3.21.

Припустімо, що обчислення наступної цифри частки d виконуються зі зсувом вправо дільника, тобто за алгоритмом «б».

Початковий стан числових змінних, за якими визначається наступна цифра частки d буде мати вигляд:

 

А ВP Примітки
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

 
 


ПП = 0

0 0 1 1 0 1 0 NA ND
 
 


0 0 1 1 0 1 0

1 0 1 1 0 0 0

       
 
 
   


1 1 1 0 0 1 0

NAM NB=0

 
 


о

 

= NA4 Å NB = 0

0 1 0 1 0 0 0 NB
 
 

 

 


= A ( )

 

 

= (А4)

 

 

A = + 011 010 B = + 101 BP = + 101 000 А = 0 011 010 ВP = 0 101000

Рисунок 3.20 – Приклад визначення розширу частки

і ознаки ПП частки при діленні (+МА)DK на (+МВ)DK.

 

 

А ВP Примітки
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     ND X X X 0 1
 
 


ППОК = 1

0 1 1 0 0 1 0 NA ND
 
 


0 1 1 0 0 1 0

1 0 1 1 0 0 0

       
 
 
   


0 0 0 1 0 1 0

NAM NB=0

о

 

= NA4 Å NB = 1

0 1 0 1 0 0 0 NB     = A ( )     = (А4)     A = + 110 010 B = + 101 BP = + 101 000 А = 0 110 010 ВP= 0 101 000

Рисунок 3.21 – Приклад визначення одиничних станів розширу


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


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