Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_Алг_комп_множ_в_ ДК_2.doc
Скачиваний:
3
Добавлен:
21.12.2018
Размер:
432.64 Кб
Скачать

5. Алгоритми комп'ютерного множення в доповняльному

коді

У багатьох ККС операнди в пам'яті зберігають у доповняльному коді. Це викликано, головним чином, тим, що в доповняльному коді, як уже було показано раніше, дуже просто виконуються операції алгебраїчного додавання, які, як відомо, зустрічаються найбільш часто, причому знак результату формується "автоматично" шляхом виконання над знаковими розрядами таких же елементарних операцій, як і над числовими розрядами. Однак множення чисел у доповняльному коді має свої особливості, обумовлені тим, що цифра в знаковому розряді від’ємного операнда, представленого доповняльним кодом, має вагу, рівна 1 і, крім того, у числових розрядах від’ємного операнда записане доповнення операнда Х до одиниці, тобто, число . Через це в загальному випадку множення доповняльних кодів операндів, виконуване за уже відомими алгоритмами, не дає доповняльного коду добутку. Далі результат такого множення будемо називати псевдодобутком.

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

5.1. Алгоритми множення в доповняльному коді з окремою

обробкою знакових розрядів

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

1. Нехай , тоді , а псевдодобуток дорівнює істинному добутку . Це звичайне множення в прямому коді.

2. Нехай , тоді , a псевдодобуток . Оскільки операнди мають різні знаки, то істинний добуток (тільки числові розряди) повинен бути отриманий як . Як видно, псевдодобуток відрізняється від істинного добутку на величину . Таким чином, для одержання правильного результату необхідно скорегувати псевдодобуток шляхом додавання до нього доповняльного коду числа -X.

3. Нехай . Очевидно, що цей варіант із точністю до перестановки множників зводиться до попереднього варіанту. Псевдодобуток тут необхідно скорегувати шляхом додавання до нього доповняльного коду числа .

4. Нехай , тоді , псевдодобуток , а істинний добуток . З порівняння і випливає, що по цьому варіанті множення необхідна би корекція . Однак практично досить корекції вигляду , тому що після її додавання "зайва" одиниця буде відноситися до знакового розряду, що не бере участі у виконанні операції. Ця одиниця може бути просто замінена правильним знаком добутку, знайденим шляхом додавання за модулем 2 знаків операндів.

Приклад 1. Склаcти цифрову діаграму множення чисел і в доповняльному коді з окремою обробкою знакових розрядів і корекцією в кінці операції (табл.1). Операцію множення цифрових розрядів виконати за першим основним алгоритмом множення в прямому коді.

Для виконання операції множення знаходимо доповняльні коди операндів: та корекцію, яка має значення .

Таблиця 1

ЛЧК

Пояснення

0 101 0

0 1001

0 000000000

000

Вихідний стан

0 010 1

0 000000000

001

Зсув

0 1001

0 100100000

Результат підсумовування

0 001 0

0 010010000

010

Зсув

0 000 1

0 001001000

011

Зсув

0 1001

0 101101000

Результат підсумовування

0 000 0

0 010110100

100

Зсув

0 0110

, корекція

0 101110100

Результат корекції

Таким чином тобто, .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]