Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Осн_алг_Комп’ют_ множе в прямому коді_N.doc
Скачиваний:
3
Добавлен:
30.07.2019
Размер:
679.42 Кб
Скачать

ОСНОВНІ АЛГОРИТМИ КОМП'ЮТЕРНОГО МНОЖЕННЯ

В ПРЯМОМУ КОДІ

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

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

0

0

0

0

1

1

1

0

1

1

1

0

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

Оскільки множення виконується в двійковій системі числення, то часткові добутки або дорівнюють 0 (при множені на 0), або дорівнюють самому співмножнику (при множені на 1), зсунутому на відповідну кількість розрядів.

Приклад. Задані числа: Х=1101, Y=1011. Знайти добуток .

Можливі два варіанти множення: а) із зсувом розрядів множеного вліво; б) із зсувом розрядів множеного вправо.

а)

б)

– множене

– множене

– множник

– множник

– множення починається з молодших розрядів;

зсув вліво (←)

– множення починається з старших розрядів; зсув вправо (→)

Далі будемо вважати, що множене Х і множник – правильні двійкові дроби вигляду

і ,

де . Тоді добуток абсолютних величин операндів і можна представити як

. (1)

Вирази вигляду , називають частковими добутками.

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

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

При цьому повну суму (добуток) можна одержати двома способами:

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

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

Базуючись на вищесказаному можна створити чотири основних алгоритми комп’ютерного множення.

  1. Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів суматора вправо

Даний алгоритм множення використовує представлення добутку у вигляді схеми Горнера для множення многочленів

(2)

Рис. 1

Звідси випливає, що добуток Z може бути отриманий за рекурентною формулою

(3)

де – сума i часткових добутків.

Таким чином, у даному випадку множення починається з молодших розрядів множника, а сума часткових добутків на кожному кроці зсувається вправо рис. 1 б). Число кроків множення дорівнює п, останній крок закінчується зсувом. ГСА такого множення представлена на рис. 1 б), де – цифра в молодшому розряді регістра множника РY на даному кроці множення ("поточна" цифра множника), ЛЧК – лічильник числа кроків множення. Довжина регістрів операндів складає п розрядів, регістра результату – 2п розрядів, лічильника кроків – розрядів.

Приклад 1. Складемо цифрову діаграму множення чисел і , (табл. 1).

Таблиця 1

ЛЧК

Пояснення

1011

110 1

00000000

000

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

1011

10110000

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

011 0

01011000

001

Зсув

001 1

00101100

010

Зсув

1011

11011100

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

000 1

01101110

011

Зсув

1011

1 00011110

100

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

10001111

Зсув

END

Результат:

2. Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів множеного вліво

Другий основний алгоритм множення заснований на представленні добутку у вигляді

(4)

,

де . Множення, таким чином, зводиться до обчислень за рекурентною формулою

, (5)

де .

Рис. 2

У данному випадку множення починається з молодших розрядів множника, сума частинних добутків нерухома, а множене в процесі множення зсувається вліво (рис. 2,а). Число кроків дорівнює п, а закінчується множення підсумовуванням. Регістр множника повинний мати довжину в п розрядів, регістри множеного і суми часткових добутків – по 2п розрядів. Перед початком множення множене повинно бути записане у відповідний регістр зі зсувом вправо на п розрядів для того, щоб було сформоване значення . ГСА такого множення показана на рис. 2, б.

Приклад 2. Складемо цифрову діаграму множення чисел і , за другим основним алгоритмом (табл. 2).

Таблиця 2

ЛЧК

Пояснення

0000 1011

110 1

0000 0000

001

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

0000 1011

0000 1011

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

0001 0110

011 0

0000 1011

010

Зсув

0010 1100

001 1

0000 1011

011

Зсув

0010 1100

0011 0111

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

0101 1000

000 1

0011 0111

100

Зсув

0101 1000

10001111

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

END

Результат: