You are on page 1of 10

5 АРИФМЕТИЧНІ ОПЕРАЦІЇ МНОЖЕННЯ ДВІЙКОВИХ ЗНАКОВИХ

ЧИСЕЛ З ФІКСОВАНОЮ КРАПКОЮ В КОМП’ЮТЕРНИХ СИСТЕМАХ

5.1 Мета заняття

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


ділення двійкових знакових чисел з фіксованою крапкою в комп’ютерних системах

5.2 Методичні вказівки щодо організації самостійної роботи студентів

Такий метод не є ефективним. Тому на практиці частіш за все використовують


спеціальні алгоритми множення чисел у додаткових кодах. Алгоритми корегування
множення операндів у ( ДК ) можна поділити на дві групи:
- алгоритми першої групи – це алгоритми з обробкою знакових розрядів
окремо від числових;
- алгоритми другої групи – це алгоритми з обработкою знакових розрядів
разом з числовими. Тобто, на суматорі додаткових кодів в процесі множення
машинних зобржень операндів отримують одночасно знакову та числову частини
добутку.
Теорема: добуток додаткових кодів множників дорівнює додатковому коду
результату тільки у випадку додатніх множників.
Якщо хоча б один із множників від’ємний, то добуток чисел на суматорі
додаткових кодів отримується додаванням поправки (  ) до добутку додаткових
кодів множників. Розглянемо арифметичне обгрутнування алгоритмів першої
групи при різних варіантах комбінацій знаків операндів. З цією метою у операндів
відкидається знакова цифра та виконується множення отриманих псевдомодулів за
одном з відомих алгоритмів. Результат такого множення назвемо псевдодобутком(
Z  ).
Позначимо вагу знакового розряду множників ( A  2 n 1 ).
Тоді, у відповідності до розглянутого раніше правила формування
додаткового коду, від’ємні множники будуть представлені у ( ДК ) наступним
чином:

[ X ] ДК  C  | X | .

[Y ] ДК  C  | Y | .

При видаленні знакового розряду отримаємо псевдомодулі [1]:

[ X ]ДК  C  | X |  A  A | X | .
[Y ]ДК  C  | Y |  A  A | Y | .

Усього можливо чотири варианти поєднання знаків множників:


Випадок №1. X  0; Y  0

Z   [ X ]ДК  [Y ]ДК | X |  | Y | [| X |  | Y |] ДК  Z .

У цьому випадку одразу отримано істинне значення додатнього добутку в (


ДК ), яке не потребує корегування.
Випадок №2. X  0; Y  0.

Z   [ X ]ДК  [Y ]ДК | X | ( A | Y |)  ( A | X |)  (| X |  | Y |].

Результат значно відрізняється від модуля коду істинного добутку:

Z  A2  (| X |  | Y |).

Z  Z   ( A2  (| X |  | Y |))  ( A | X |)  (| X |  | Y |)  ( A2  A | X |)  A  ( A | X |)   2 .
Множник A | X | представляє собою ( n  1 )-розрядний псевдомодуль числа (
 X ), що предаставлений у ( ДК ).
Множник А еквівалентний зсуву [ X ]ДК на ( n  1 ) розряд вліво.
Порівняння ( Z ) і ( Z  ) показує, що результат множення повинен бути
скорегований за допомогою додавання ( Z  ) з поправкою (  2 ).
Випадок №3. X  0; Y  0.

Z   [ X ] ДК  [Y ] ДК  ( A | X |) | Y | ( A | Y |)  (| X |  | Y |).

3  Z  Z   ( A2  | X |  | Y |)  ( A | Y |  | X |  | Y |)  ( A2  A | Y |)  A  ( A | Y |).
Випадок №4. X  0; Y  0.

Z   [ X ]ДК  [Y ]ДК  ( A | X |)  ( A | Y |)  ( A  A)  ( A | X |  A  Y |)  (| X |  | Y |).


Тоді істинний добуток ( Z ) дорівнює:

Z | X |  | Y |  4  Z  Z   | X |  | Y |  A2  A | X | 
 A | Y |  | X |  | Y |  A  (| X |  | Y |  A).
На практиці використовують спрощену поправку  4  A  (| X |  | Y |) ,
оскільки не скорегований операнд ( C ) проявить себе у вигляді ( 1 ) у знаковому
розряді. Це не має значення, оскільки знак ( Z ) був сформований окремо на
початковому етапі. Підхід до формування алгоритму множення полягає в
наступному:
1. Отримаємо псевдомодулі операндів, відкинувши старші (знакові) цифри: (
0 ) – в додатньому числі, (1 ) – у від’ємному.
2. Вважаючи розрядну сітку нарощуваною, бачимо, що операнд у старших
розрядах містить незначущі цифри, тотожно, рівні знаковій.
3. У такому випадку істинні операнди можемо вважати «подовженими
псевдомодулями», у яких ліві цифри грають роль знакових розрядів.
4. Виконуючи їх множення за правилами, розглянутими вище, отримаємо вже
не модуль ( Z  ), а самий псевдодобуток з деякими псевдознаковими цифрами у двох
найстарших розрядах. Зазначені цифри за розміщенням відносяться до знакових,
але не мають такого значення.
5. Виникає задача знайти істинне значення знакової цифри числа ( Z ).
Розглянемо арифметичне обгрунтування алгоритмів другої групи при різних
варіантах комбінацій знаків операндів, тобто, множення чисел в ( ДК ) з обробкою
знакових розрядів разом з числовими, в залежності від поєднання знаків множників.
При цьому використаємо передумови, наведені у попередньому доказі. Вважаемо,
що вага знакового розряду дорівнює ( А ). Тоді, вага розряду наступного після
знакового: C  2 A  2 n .
Випадок №1. X  0; Y  0.
Перемножуючи машинні представлення множників у ( ДК ), отримаємо:

Z  [ X ] ДК  [Y ] ДК | X |  | Y | Z ; 1  0 .

Випадок №2. X  0; Y  0.
Враховуючи, що розрядність добутку (і псевдодобутку) складає ( 2n )-біт, вага
наступного розряду за знаковим розрядом добутку:

C Z  2 2 n  C 2  4  A2 .

Тоді:
[Y ] ДК  C  | Y | .

Перемножуючи ДК множників, отримаємо:

Z   [ X ] ДК  [Y ] ДК | X | (C  | Y |)  (C | X |)  (| X |  | Y |).


Істинне значення добутку становить:
Z  C2  | X | |Y |.
 2  Z  Z   (C 2  | X |  | Y |)  (C | X |  | X |  | Y |)  (C 2  C | X |)  C  (C  | X |).
Випадок №3. X  0; Y  0.
Аналогічно попередньому випадку, можна показати, що даному варіанту
потребується корегування:
 3  C  (C  | Y |).
Випадок №4. X  0; Y  0.

Z   [ X ] ДК  [Y ] ДК  (C  | X |)  (C  | Y |)  C 2  (C | X | C | Y |)  (| X |  | Y |).

Z | X |  | Y |  4  Z  Z  | X |  | Y | C 2  C  | X | 
 C  | Y |  | X |  | Y | C  (| X |  | Y | C ).

На практиці використовують спрощену поправку:

 4  С  (| X |  | Y |) .

При множенні в ( ДК ) у будь-якому з варіантів даної групи в процесі


додавання (  ) до ( Z  ), важливо дотримуватись відповідності вагів розрядів
псевдодобутку та корегування поправки (з урахуванням наявності псевдознака).
Старший розряд, що корегує поправки, сформує знакову цифру. Із розглянутих
раніше варіантів множення, у відповідності з алгоритмами обох груп, слідує, що
для корегування результату множення ( ДК ) операндів необхідно у кажному
випадку визначити за комбінацією знаків величину корегування, а потім виконати
1-2 кроки додавання.
Однак, цього можна уникнути, якщо комбінувати корегування з процесом
додавання часткових добутків. Розглянуті алгоритми є базовими та реалізують
безпосередній способ введення поправок. Більш широке застосування на практиці
отримали алгоритми з непрямимспособом введення поправок.
Випадок №1. X  0; Y  0.
По прикладу першої та другої груп, результат є істинним добутком і
корегування не потребується. Тобто, сформовано істинні модуль та знак.
Випадок №2. X  0; Y  0.
При множенні молодшими розрядами вперед отримується відомий для цього
випадку модуль псевдодобутку. Якщо при множенні на знакову цифру множника
не додавати останній ( ЧД ) до їх суми, а відняти його, тим самим, ( Z  ) буде
зменшено на ( C | X | ).
Крім того, якщо для представлення останнього ( ЧД ) скористатися ( ДК ), то
при його додаванні не тільки буде скорегована числова частина добутку, але й
сформується його правильний знак.
При цьому, останній зсув ( ЧД ) повинен бути арифметичним з урахуванням
від’ємного знака ( ЧД ).
Випадок №3 X  0; Y  0.
Якщо зсув суми ( ЧД ) вправо на ( i ) розрядів виконувати за правилами
модифікованого зсуву ( ДК ), а потім виконувати додавання ( ЧД ) за правилами
додавання модифікованих ( ДК ) (із втратою переносу зі знакового розряду), то
отримаємо правильний добуток вихідних чисел у ( ДК ), тобто, ( Z   Z ).
Таким чином, корегування не потребується.
Випадок №4 X  0; Y  0.
Корегування результату виконується об’єднанням двох попередніх варіантів,
тобто, при множенні на знаковий розряд множника виконують віднімання, а
додавання та зсув часткових добутків проводять з використанням ( МДК ).
Таким чином, при додатньому множнику опрацію множення в ( ДК ) можна
виконувати за алгоритмами множення в ( ПК ), якщо додавати ( ЧД ) та зсув
виконувати за правилами додавання і зсуву модифікованого ( ДК ) (перенос із ( ЗР
) буде ігноруватися).
Існує ще один спосіб множення знакових чисел у ( ДК ).
Він полягає у тому, що від’ємний множник необхідно перетворити у додатній.
Це виконується множенням на (  1 ) множимого та множника.
У відповідності з приведеною вище теоремою, множення виконується за
звичайним правилом, а корегування результау не потребується.
Загальний алгоритм множення цілих двійкових знакових чисел, що
представлені у ( ДК ), полягає в наступному:
1. Вихідне значення суми ( ЧД ) дорівнює ( 0 ), ( Л.Т ) просвоюється значення
рівне числу розрядів множника.
2. Аналізується молодша розрядна цифра множника. Якщо вона дорівнює (1
), то до суми ( ЧД ) додається множене; якщо ( 0 ) – додавання не проводиться.
Множене при цьому поєднується з сумою ( ЧД ) за старшими розрядами та
представлено у вихідному коді.
3. Виконується арифметичний зсув суми ( ЧД ) вправо на (1 ) розряд з
урахування прапорів переносу ( CF ) і переповнення ( OF ). Вміст ( Л.Т )
зменшується на (1 ).
4. пп.2-3 послідовно виконуються для всіх цифрових розрядів множника.
5. Якщо множник – додатнє число, то отриманий результат є істинний
добутком ( Z ). Якщо множник – від’ємне число, то до отриманого результату ( Z  )
додається множене зі зворотнім знаком (доповнення), поєднане за старшим
розрядом. Отримана сума представляє собою істиннй добуток ( Z ).
T  (n  1)(tc  t  ), де ( tc ) – час, витрачений на виконання операції зсуву на один
розряд; ( t  ) – час, витрачений на виконання операції додавання.

5.3 Приклади аудиторних завдань

Завдання №1. Необхідно перемножити два знакових числа:

((7)  (3))  (21).

Розв’язання. Для зручності візьмемо довжину розрядної сітки рівну чотирьом


бітам, а саме:

X  (7) – множене;
Y  (3) – множник;
Z  (21) – добуток (восьмибітне).

Якщо ( X ) та ( Y ) дорівнюють чотирьом бітам, то, як було відмічено вище, (


Z ) повинно бути восьмирозрядним значенням, тобто, довжина розрядної сітки
добутку в два рази більше множеного та множника.
Алгоритм множення приведено в табл. 5.1.

Таблиця 5.1 – Алгоритм множення зі зсувом вправо двійкових знакових чисел


Регістр (В) Регістр (С) Регістр (А) Лічильник
множене множник добуток тактів Коментарі
X Y Z (Л.т.)
0 1 1 1 0 0 1 1 00000000 4
0111 множене
01110000 1А СЧД
→ 0 0 1 00111000 3 1ИЙ зсув СЧД
0111 множене
10101000 2А СЧД
→ → 0 0 01010100 2 2ИЙ зсув СЧД
→ → → 0 00101010 1 3ІЙ зсув СЧД
00010101 0 4ИЙ зсув СЧД та
отримали число –
(+21)
СТОП

Завдання №2. Необхідно помножити два знакових числа:


((7)  (3))  (21).

Розв’язання. Для зручності візьмемо довжину розрядної сітки рівну чотирьом


бітам, а саме:

X  (7) – множене,
Y  (3) – множник,
Z  (21) – добуток.

Якщо ( X ) та ( Y ) дорівнюють чотирьом бітам, то як було зазначено вище, ( Z


) повинно бути восьмирозрядним значенням.
Тобто, довжина розрядної сітки добутку в два рази більше множимого і
множника.
Алгоритм множення наведено в табл. 5.2.
Таблиця 5.2 – Алгоритм множення зі зсувом вправо двійкових знакових чисел
Регістр (В) Регістр (С) Регістр (А) Лічильник
множене множник добуток тактів Коментарі
X Y Z (Л.т.)
0 1 1 1 1 1 0 1 00000000 4
0111 множене
01110000 1А СЧД
→ 1 1 0 00111000 3 1ИЙ зсув СЧД
→ → 1 1 00011100 2 2ИЙ зсув СЧД
0111 множене
10001100 2А СЧД
→ → → 1 01000110 1 3ІЙ зсув СЧД
0111 множене
10110110 3А СЧД
01011011 0 4ИЙ зсув СЧД і ((Z’))
1001 корекція на (ХД)
11101011 число (-21)
СТОП

Завдання №3. Необхідно помножити два знакових числа: ((7)  (3))  (21)
. Алгоритм множення наведено в табл. 5.3.

Таблиця 5.3 – Алгоритм множення зі зсувом вправо двійкових знакових чисел


Регістр (В) Регістр (С) Регістр (А) Лічильник
множене множник добуток тактів Коментарі
X Y Z (Л.т.)
1 0 0 1 0 0 1 1 00000000 4
1001 множене
10010000 1А СЧД
→ 0 0 1 01001000 3 1ИЙ зсув СЧД
1001 множене
11011000 2А СЧД
→ → 0 0 01101100 2 2ИЙ зсув СЧД
→ → → 0 00110110 1 3ІЙ зсув СЧД
00011011 0 4ИЙ зсув СЧД і ((Z’))
1101 корекція на (YД)
11101011 число (-21)
СТОП

Розв’язання. Для зручності візьмемо довжину розрядної сітки рівну чотирьом


бітам, а саме: X  (7) – множене; Y  (3) – множник; Z  (21) – добуток. Якщо
( X ) та ( Y ) дорівнюють чотирьом бітам, то, як було зазначено вище, ( Z ) повинно
бути восьмирозрядним значенням. Тобто, довжина розрядної сітки добутка в два
раза більше множеного та множника.

Завдання №4 .Необхідно помнжити два знакових числа:


((7)  (3))  (21).
Розв’язання. Для зручності візьмемо довжину розрядної сітки рівну чотирьом
бітам, а саме:
X  (7) – множене;
Y  (3) – множник;
Z  (21) – добуток.
Якщо ( X ) та ( Y ) дорівнюють чотирьом бітам, то, як було зазначено вище, (
Z ) повинно бути восьмирозрядним значенням.
Тобто, довжина розрядної сітки добутка в два рази більше множеного та
множника. Алгоритм множення наведено в табл. 5.4.
Таблиця 5.4 – Алгоритм множення зі зсувом вправо двійкових знакових чисел
Регістр (В) Регістр (С) Регістр (А) Лічильник
множене множник добуток тактів Коментарі
X Y Z (Л.т.)
1 0 0 1 1 1 0 1 00000000 4
1001 множене
10010000 1А СЧД
→ 1 1 0 01001000 3 1ИЙ зсув СЧД
→ → 1 1 00100100 2ИЙ зсув СЧД
1001 множене
10110100 2Я СЧД
→ → → 1 01011010 2 3ІЙ зсув СЧД
1001 множене
11101010 3Я СЧД
01110101 0 4ИЙ зсув СЧД і ((Z’))
0111 корекція на (XД)
11100101
0011 корекція на (YД)
1 00010101 число (+21)
СТОП

5.4 Зміст звіту

1 Назва і мета лабораторної роботи.


2 Завдання, отримане від викладача.
3 Зміст ходу виконання роботи.
4 Висновки.

Приклад оформлення титульного листа звіту по лабораторної роботі:

Міністерство освіти і науки України


харківський національний економічний університет
імені Семена Кузнеця

Кафедра ІС
ЗВІТ
з лабораторної роботи №1

з дисципліни «Методи та засоби комп’ютерних обчислень»

Виконал(а): Перевірив викладач:


ст. гр. 6.04.122.010.19-1 доц. Токарєв В. В.
П.І.П.-студента

Харків 2020

5.5 Контрольні запитання

1. Пояснити прицип работи логічного зсуву.


2. Пояснити прицип работи арифметичного зсуву.
3. Пояснити прицип работи модифікованого зсуву.
4. Пояснити прицип работи циклічного зсуву.
5. Сформулюйте алгоритм множення молодшими розрядами вперед, зі зсувом
суми ( ЧД ) вправо двійкових знакових чисел.
6. Сформулюйте алгоритм ділення цілих двійкових знакових чисел методом
без відновелння залишку.

You might also like