Особливостi множення чисел, якi задано у додатковому кодi 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Особливостi множення чисел, якi задано у додатковому кодi



 

Операцію множення найпростіше виконувати в прямих кодах чисел.

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

У цiлому, числа бажано зберігати у запам’ятовуючих пристроях (ЗП) і виконувати над ними додавання та множення в інверсному коді.

Співмножники мають бути заданіу прямому коді (для додатних співмножників) або в інверсному коді (для від`ємних співмножників). Добуток необхідно отримати у такому ж форматi: у прямому коді, якщо добуток є додатним; в інверсному коді, якщо добуток є від’ємним.

Для усунення циклічних переносів, раціонально використовувати додатковий код.

Передумови необхiдностi введення корекцій у попередній результат множення чисел, якi задано у додатковому коді

 

При множенні чисел у додатковому коді, так само, як і при алгебраїчному додаванні, потрібне введення корекцій у попередній результат, які вносяться, виходячи з наведених далi об`єктивних передумов.

Якщо число А є від’ємним, то значущі цифри його додаткового коду утворюють величину |[ A ]д| = 1 – | A |.

Тому, при перемножуванні модулів кодів операндів, у залежності від сполучення знаків співмножників, можуть виникнути наведенi нижче чотири випадки та, вiдповiдно, чотири рiзних типи корекцiй.

 

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

 

Випадок 1. A > 0, B > 0.

Даний випадок є тривіальним, для нього одразу можна отримати істинне значення додатного добутку: [ A ]д[ B ]д = [ AB ]д = AB.

Випадок 2. А > 0, В < 0.

Результат множення є псевдодобутком |[ A ]д||[ B ]д| = | A |*(1 – | B |) = = |А| – |А||В|. Правильний добуток у додатковому коді повинен дорівнювати |[ AB ]д| = 1 – | A |*| B |. Тому потрібна корекція псевдорезультату на величину доповнення модулю множеного до одиниці D = 1 – | А|.

Випадок 3. А < 0, В > 0.

Після безпосереднього застосування алгоритму множення, отримуємо псевдорезультат |[ A ]д||[ B ]д| = (1 – |A|)*| B | = |B| – |А||В|. Правильний результат у додатковому коді дорівнює |[ AB ]д| = 1 – | A |*| B |. Тому потрібна корекція псевдорезультату на величину доповнення множника до одиниці D = 1 – | В|.

Випадок 4. А < 0, В < 0.

Після безпосереднього застосування алгоритму множення, отримуємо псевдорезультат |[ A ]д||[ B ]д| = (1 – |A|)*(1 – | B |) = (1 – | A | – | B | + | A || B |). Зазначений псевдорезультат вимагає корекції на величину D = | А| + | B |, оскiльки зайва одиниця розміщується в знаковому розряді та може бути просто замінена знаком добутку.

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

Корекцію результату при множенні чисел у додаткових кодах можна робити наступними двома способами: 1) у процесі формування результату; 2) одразу по закінченні процесу формування результату.

Корекцiю результату множення в процесi його формування застосовують частіше, оскiльки вона не вимагає додаткових тактів роботи арифметичного пристрою (АП), якi призводять до зниження швидкостi обчислень та ускладнення схеми управлiння множенням.

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

Iз урахуванням вище викладеного, корекцію псевдорезультату для від’ємного множника можна виконати при множенні множеного А на знакову одиницю множника В, розглядаючи її як від’ємну.

Тобто, замість додавання А, в даному циклі множення потрібно виконати віднімання А (додавання [-А]д).

Оскiльки в даному циклі додається 2 – | А| замість 1 – | A |, то відразу формується і правильна знакова цифра результату: в силу вхідного сполучення знаків, він повинен бути від’ємним і, отже, представленим у додатковому коді.

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

Розглянемо приклад.

Виконаємо множення чисел A = 0,1011 та B = –0,1101.

Для зазначених чисел: [– A ]дм = 11,0101; [ B ]дм = 11,0011.

Обчислення набудуть наступного вигляду:

 

00,1011 11,0011 --------- 11,0101 00,00000 00,000000 00,0001011 00,00001011 --------------- 11,01110001   - A *20 +0 +0 + A *2-3 + A *2-4

 

 

У пiдсумку, отримуємо правильний результат зі знаком.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 213; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.48.135 (0.004 с.)