WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаТехнічні науки → Виконання операцій множення і ділення у двійковій системі числення - Курсова робота

Виконання операцій множення і ділення у двійковій системі числення - Курсова робота

Для реалізації варіанта б необхідні: (п + 1)-розрядний регістр дільника; (п + 1)-розрядний регістр частки з колами зсуву вліво і (n + 1)-розрядний суматор з колами зсуву вліво. Решта блоків така сама, як для варіанта а.

а)

б)

Рис. 3.8. Варіанти пристроїв для ділення без відновлення остач:

а - зі зсувом дільника; б - зі зсувом остач

Аналіз обох схем показує, що апаратні витрати на реалізацію варіанта б менше, ніж варіанта а. Проте у варіанті б неможливо сумістити додавання і зсув, оскільки додавання в НСМ можна тільки після закінчення зсуву коду остачі в нагромаджувальному суматорі. В варіанті а кожну цифру дільника з відповідного розряду регістра РгВ можна одночасно передавати за двома адресами: в сусідній правий розряд цього регістра (зсув) і у відповідний розряд НСМ, тобто починати виконувати додавання модуля дільника (або його доповнення) до остачі. Виходячи з цього, час ділення за алгоритмом без відновлення остач і зі зсувом дільника дорівнює , тоді як зі зсувом остач - .

3.5.3. Ділення чисел, що представлені в доповняльному коді

Коли в пам'яті машини числа зберігаються в доповняльному коді, то виникає задача пошуку найраціональніших методів ділення в доповняльному коді. Так само як і в разі множення, тут можливі два варіанти:

- переведення операндів у прямий код, одержання частки звичайним способом і переведення його в доповняльний код перед записом у пам'ять;

- ділення операндів у доповняльному коді з одержанням частки в необхідному вигляді.

Реалізація другого варіанта так само проста, як і першого. Необхідно тільки керувати логікою утворення цифр частки. Принципово є можливість одержувати ці цифри як з виходу БІЦ, так і минаючи цей блок. При цьому буде формуватись обернений код частки, який неважко перетворити в доповняльний код. Практична реалізація такого ділення може бути організована двома шляхами:

  • аналізуючи знаки операндів блок керування БК організує передавання знакових цифр остач із НСМ в регістр частки так, щоб результат завжди формувався в оберненому коді (тобто додатна частка складалась із прямих значень цифр, а від'ємне - з обернених);

  • аналізуючи знаки операндів блок БК організує спочатку або віднімання модуля дільника від модуля діленого, або віднімання модуля діленого від модуля дільника, для того щоб логіка утворення частки в разі всіх можливих комбінацій знаків операндів залишалась незмінною. Разом з тим частка має обов'язково формуватись в оберненому коді.

Розглянемо чотири можливих випадки, що обумовлені комбінаціями знаків доповняльних кодів операндів.

Випадок1. А > 0; B > 0; C = A/B > 0.

Ділення виконується як звичайно: знак частки визначається шляхом додавання знакових цифр операндів за модулем 2 і одночасно формується доповнення модуля дільника до двох. Цифри частки одержуються шляхом інвертування знакових цифр остач в БІЦ.

Випадок2. А > 0; B < 0; C = A/B < 0.

Ділення починається з віднімання модуля дільника від діленого. У разі відсутності переповнення розрядної сітки знак першої остачі обов'язково буде дорівнювати 1. Отже, його потрібно без інвертування надіслати до знакового розряду РгС. Продовжується ділення звичайним шляхом, але знакові цифри остач надходять до регістра частки минаючи БІЦ. По закінченню ділення в РгС утворюється обернений код від'ємної частки. Додаванням одиниці до (п + 1)-го розряду частки здійснюється одночасно округлення частки і переведення оберненого коду в доповняльний.

Приклад 3.18. Поділити число А = 0,1010 на число В = - 0,1101, використовуючи ділення в доповняльному коді.

Розв'язання. Для даних чисел маємо: [А]д = 0,1010; [В]д = 1,0011.

Усі дії, що виконуються в процесі ділення, наведені в табл. 3.20. Обернений код частки має вигляд 1,00111. Додавши одиницю до наймолодшого розряду і відкидаючи його, одержимо [С]д = 1,0100

Відповідь: С= - 0,1100.

Таблиця 3.20 - Приклад ділення в доповняльному коді для випадку А > 0 і B < 0

Випадок3. А < 0; B > 0; C = A/B < 0.

Цей випадок є дзеркальним відображенням попереднього. Отже, для того щоб одержати обернений код від'ємної частки, необхідно надсилати знакові цифри остач до регістра частки через БІЦ. Наприкінці ділення, так саме як у другому випадку, необхідно додати одиницю до (п + 1)-го розряду частки для переведення його в доповняльний код і округлення одночасно.

Приклад 3.19. Поділити число А = - 0,1010 на число В = 0,1101, використовуючи ділення в доповняльному коді.

Розв'язання. Для даних чисел маємо: [А]д = 1,0110; [В]д = 0,1101.

Усі дії, що виконуються в процесі ділення, наведені в табл. 3.21. Обернений код частки має вигляд 1,00111. Додавши одиницю до наймолодшого розряду і відкидаючи його, одержимо [С]д = 1,0100

Відповідь: С= - 0,1100.

Таблиця 3.21 - Приклад ділення в доповняльному коді для випадку А < 0 і B > 0

Випадок4. А < 0; B < 0; C = A/B > 0.

Ділення починається з віднімання модуля діленого від модуля дільника. Для цього достатньо перетворити попередньо тільки код дільника. В процесі ділення знакові цифри остач необхідно надсилати до регістра частки без інвертування, минаючи БІЦ, оскільки частка має бути додатною, а її доповняльний код - співпадати з прямим.

3.5.4. Особливості ділення чисел з плаваючою комою

Для чисел і , що представлені в формі з плаваючою комою, частка визначається за формулою:

де , .

Звідси випливає, що процес ділення складається з чотирьох етапів:

  • ділення мантис;

  • віднімання порядків;

  • нормалізація мантиси частки;

  • корегування порядку частки.

Перші два етапи можуть виконуватись одночасно, оскільки вони незалежні один від одного. При цьому ділення мантис повністю співпадає з діленням чисел, що представлені в формі з фіксованою комою. Відміна полягає лише в тому, що мантиси операндів можуть співвідноситись одна з одною довільно. Оскільки мантиси діленого і дільника - нормалізовані числа, то можливі такі випадки: ; .

Коли мантиса діленого більше або дорівнює мантисі дільника, то на початку ділення одержується цифра частки, що дорівнює 1 і яка записується в цілу частину частки. Решта дій над мантисами аналогічні діям над числами, що представлені в формі з фіксованою комою. Одержана при цьому мантиса частки буде мати порушення нормалізації праворуч. Воно усувається шляхом зсуву коду мантиси на один розряд управо і, відповідно, корегується порядок частки шляхом додавання одиниці до різниці порядків.

Коли мантиса діленого менше мантиси дільника, то на початку ділення одержується цифра частки, що дорівнює 0 і яка записується в цілу частину частки. Далі ділення мантис продовжується за правилами ділення чисел, що представлені в формі з фіксованою комою. Одержана при цьому мантиса частки буде мати нормалізовану форму.

Під час виконання операції ділення чисел з плаваючою комою можуть мати місце такі особливі випадки.

Якщо дільник дорівнює нулю, то формується сигнал "Зупинка машини".

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

У разі переповнення додатного порядку необхідно формувати ознаку переповнення порядку.

Ці особливі випадки можна передбачити в алгоритмі операції ділення введенням аналізатора дільника на нуль і корегування частки на підставі ознак результату.

Loading...

 
 

Цікаве