- •Інститут менеджменту та економіки
- •Івано-Франківськ
- •Схвалено Вченою Радою Інституту менеджменту та економіки «Галицька академія» від 30 жовтня 2003р., протокол № 2 .
- •Передмова
- •1. Системи числення. Взаємнi переведення. Двiйково-десяткова система числення та ascii-коди
- •1.1.Загальнi вiдомостi пpо системи числення. Пpедставлення чисел в десятковiй та двiйковiй системах числення.
- •1.2.Взаємнi пеpетвоpення чисел в десятковiй та двiйковiй
- •1.3.Шiстнадцяткова система числення
- •1.4.Двійково-десятковi та ascii-коди
- •1.5.Завдання до гл.1.
- •2. Функції алгебри логіки. Способи завдання логiчних функцiй.
- •2.1.Табличний спосiб завдання логiчних функцiй
- •2.2.Логiчнi функцii однiєї та двох логiчних змiнних
- •2.3.Аналiтичний спосiб завдання логiчних функцiй
- •2.4.Завдання до гл.2
- •3.Закони алгебри логiки. Мiнiмiзацiя логiчних рiвнянь.
- •3.1.Закони алгебpи логiки
- •3.2.Пpиклад мiнiмiзацiї логiчних piвнянь на основi законiв
- •3.3. Пpедставлення логiчних рiвнянь каpтами Каpно
- •3.5.Завдання до гл.3
- •4.Базиси логiчних функцiй. Синтез та аналiз логiчних схем
- •4.1.Поняття базису логiчних функцiй. Пеpеведення логiчних piвнянь до piзних базисiв
- •4.2.Синтез логiчних схем
- •4.3.Аналiз логiчних схем
- •4.4.Завдання до гл.4
- •5. Особливостi виконання арифметичних операцiй додавання та вiднiмання.
- •5.1.Розpядна сiтка засобiв обчислювальної технiки
- •5.2.Беззнаковий фоpмат пpедставлення двiйкових чисел
- •5.3.Пpедставлення знакових чисел в прямих кодах
- •5.4.Пpедставлення знакових чисел в додаткових кодах
- •5.5.Завдання до гл.5.
- •6. Зсув. Алгоритми множення та дiлення
- •6.1. Множення, дiлення двiйкових чисел на 2. Операцiї логiчного та арифметичного зсуву
- •6.2. Множення, дiлення двiйкових чисел на довiльнi константи
- •6.3. Алгоритми множення двiйкових змiнних
- •6.4. Алгоритми дiлення двiйкових змiнних
- •6.5.Завдання до гл.6
- •7. Приклад рiшення завдання контрольної роботи
- •Рiшення завдання 5
- •Рiшення завдання 6
- •Комп’ютерна схемотехніка
- •Сергій Михайлович Іщеряков
- •76006, М.Івано-Франківськ, вул.Вовчинецька, 227, іме
6.2. Множення, дiлення двiйкових чисел на довiльнi константи
Операцiї зсуву є базовими i в процедурах множення двiйкових змiнних на цiлi константи, значення яких вiдрiзняються вiд цiлої степенi числа 2. Для цього константи представляються сумою цілих степенів двійки наступним чином:
3*X = 2*X + X;
5*X = 4*X + X;
6*X = 4*X +2*X;
...
Легко помiтити, що розкладення констант на цiлi степенi числа 2 при здiйсненнi процедури множення є не чим iншим, як схемою Горнера, що застосовується для представлення двiйкових чисел. Таким чином, множення двiйкової беззнакової змiнної на довiльну цiлу константу здiйснюється згiдно наступного алгоритму:
- константа-множник представляється у двiйковому виглядi, видi-
ляються розряди 2i iз одиничними бiтами,
- змiнна-множник зсувається влiво n-1 разiв, де n - кiлькiсть бiт у двiйковому кодi константи-множника,
- зсунутi значення змiнної, що вiдповiдають одиничним бiтам
двiйкового коду константи, запам'ятовуються та додаються; попередньо перед додаванням всi зсунутi значення змiнної доцiльно представити числами однакової розрядностi шляхом записування необхiдної кiлькостi нульових бiтiв до старших розрядiв.
Вiдмiтимо, що результат множення чисел розрядності n1 та n2 має довжину n1 + n2.
Приклад. Помножити 8-розрядну беззнакову змiнну 10110100 (bin) на константу 92 (dec).
1. Представимо константу 92 (dec) у двiйковiй формi:
92 (dec) = 01011100 (bin).
2. Запишемо значення змiнної-множника 10110100, зсунутi влiво 2,3,4 та 6 разiв, згiдно iз наявнiстю одиничних бiтiв у 2, 3,4 та 6 розрядах константи 92 (dec):
1011010000- зсув змiнної-множника 10110100 влiво на 2 розряди,
10110100000 - зсув змiнної-множника 10110100 влiво на 3
розряди,
101101000000 – зсув змiнної-множника 10110100 влiво на 4
розряди,
10110100000000 - зсув змiнної-множника 10110100 влiво на 6
розрядiв.
3. Доповнимо нулями старшi розряди перших трьох зсувiв (змiнна-множник є беззнаковою, тому розширення розрядностi проводиться нулями) та додамо чотири зсунутi значення змiнної-множника:
00001011010000
00010110100000
00101101000000
10110100000000
100000010110000 (bin) = 16560 (dec)
4. Перевiримо результат десятковим множенням:
180 dec * 92 dec = 16560 dec.
Вiдмiтимо також, що результат множення 8-розрядної змiнної на 7-розрядну константу має 15 двiйкових розрядiв.
Множення на константи iз дробовою частиною здiйснюється окремо для цiлої та дробової частин константи iз наступним додаванням одержаних добуткiв.
Множення змiнної на дробову частину константи здiйснюється, в цiлому, способом, аналогiчним вищенаведеному:
– дробова константа-множник представляється у двiйковому виглядi, видiляються розряди iз одиничними бiтами,
– змiнна-множник зсувається вправо n - 1 разiв, де n - кiлькiсть бiт у двiйковому кодi дробової константи-множника; молодшi розряди змiнної, якi виходять за межi розрядної сiтки, як правило, не зберiгаються та, в подальшому, втрачаються,
– зсунутi значення змiнної, що вiдповiдають одиничним бiтам двiйкового коду константи, запам'ятовуються та додаються.
Вiдмiтимо, що результат множення змiнної на дробову константу не збiльшує розрядності змiнної.
Приклад. Помножити 8-розрядну беззнакову змiнну 10110100 bin (180 dec) на константу 0,63 dec.
1. Представимо константу 0,63 (dec) у двiйковiй формi довжиною 1 байт:
0,63
1,26
0,52
1,04
0,08
0,16
0,32
0,64
1,28, тобто 0,63 (dec) = 0,10100001 (bin).
2. Запишемо значення змiнної-множника 10110100, зсунутi вправо 1, 3 та 8 разiв, згiдно iз наявнiстю одиничних бiтiв у 1, 3 та 8 розрядах константи 0,63 (dec):
01011010 - зсув змiнної-множника 10110100 вправо на 1 розряд,
00010110 - зсув змiнної-множника 10110100 вправо на 3 розряди
iз втратою молодшого одиничного бiту,
00000000 - зсув змiнної-множника 10110100 влiво на 8 розрядiв.
Вiдмiтимо, що останнiй зсув змiнної на 8 розрядiв супроводжується повним її зникненням, тобто може бути проiгнорованим. Тому у вищенаведеному правилi зсув вправо рекомендується проводити n - 1 разiв.
3. Додамо два зсунутi значення змiнної-множника:
01011010
00010110
───────────────
01110000 (bin) = 112 (dec)
4. Перевiримо результат десятковим множенням:
180 dec * 0,63 dec = 113,4 dec.
Похибка -1,4 виникла за рахунок вiдкидання одиничних молодших бiтiв, що втрачаються при зсувi змiнної вправо за межi розрядної сiтки.
Дiлення на константи Х, якi не дорiвнюють цiлiй степенi числа 2, доцiльно перетворювати у множення на константи, що є оберненими до дiльника - 1/Х.
Приклад. Подiлити 8-розрядну беззнакову змiнну 10110100 bin (180 dec) на константу 11,34 dec.
1. Знайдемо константу Y, обернену до дiльника Х
Y = 1/X = 1 / 11,34 = 0.088 dec.
2. Подальша процедура множення змiнної 10110100 bin на константу 0.088 dec аналогiчна вищенаведенiй (перетворення константи у двiйкову форму, тощо).
