- •Інститут менеджменту та економіки
- •Івано-Франківськ
- •Схвалено Вченою Радою Інституту менеджменту та економіки «Галицька академія» від 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.4. Алгоритми дiлення двiйкових змiнних
Процедура ділення двійкових чисел реалізується циклічними діями, подібними до операції множення, за виключенням заміни додавання відніманням. Вiдмiтимо iнші характерні особливості операції ділення:
- розрядність частки дорівнює різниці між довжинами діленого та дільника,
- додатково до частки формується не дробова частина, а залишок,
- ділене, як правило, має подвійну довжину порівняно із дільником; якщо розрядності діленого та дільника однакові, то довжина діленого подвоюється за правилами розширення знаку,
- результатом ділення є переповнення, коли дільник дорівнює нулю;
- у випадку подвійної довжини діленого по відношенню до дільника переповнення виникає також, коли старша половина діленого є не меншою за дільник.
Наприклад, для беззнакового дiлення числа 1010 0011 на 1000 0011 дiлене повинно бути представлене як 0000 0000 1010 0011, а дiлення числа 1110 1110 1010 0011 на число 1100 0011 приведе до переповнення :
1110 1110 > 1100 0011.
Розглянемо детальнiше останню особливiсть операцiї дiлення. Виникнення переповнення в даному випадку означає не нескiнченно великий результат, а викликане утворенням результату, розряднiсть якого перевищує розряднiсть частки, тобто виходить за межi розрядноi сiтки результату.
Приклад ділення беззнакових чисел:
0000000011110000 ¦00000111
¦---------------- 11110000 = 240 (дес.),
- 00000111 ¦00100010 - частка 00000111 = 7 (дес.),
------------------- 00100010 = 34 (дес.),
00001000 240: 7 = 34 (2 - залишок)
-00000111
-------------
10 - залишок
Операцiя дiлення може бути представлена n-тактовою (n – кiлькiсть бiт дiльника) послiдовною процедурою утворення частки згiдно наступного алгоритму:
- перед початком процедури дiлене має подвоєну довжину порiвняно iз дiльником; дiльник змiщений максимально влiво (на n розрядiв),
- в кожному i-тому тактi дiльник одноразово зсувається вправо,
- якщо дiлене, а в подальшому, залишок вiд дiленого, менше дiльника, то до частки заноситься нульовий бiт, якщо дiлене, а в подальшому, залишок вiд дiленого, бiльше дiльника, то здiйснюється вiднiмання дiльника вiд частки, а до частки заноситься одиничний бiт.
1. Алгоритм ділення зсувом дільника вправо
Початковий стан: 0000000011110000 - ділене
0000011100000000 - дільник
1) 0000000011110000 - ділене
-0000001110000000 - дільник
віднімання не відбувається, до частки - 0,
2) 0000000011110000 - ділене
-0000000111000000
віднімання не відбувається, до частки - 0,
3) 0000000011110000 - ділене
-0000000011100000
0000000000010000 - залишок
до частки - 1,
4) 0000000000010000 - залишок
-0000000001110000
віднімання не відбувається, до частки - 0,
5) 0000000000010000 - залишок
-0000000000111000
віднімання не відбувається, до частки - 0,
6) 0000000000010000 - залишок
-0000000000011100
віднімання не відбувається, до частки - 0,
7) 0000000000010000 - залишок
-0000000000001110
0000000000000010 - залишок,
до частки - 1,
8) 0000000000000010 - залишок кiнцевий
-0000000000000111
віднімання не відбувається, до частки - 0.
Частка - 00100010, залишок - 00000010.
По аналогii зсуву вправо дiльника вiдносно дiленого, надалi - залишку вiд дiленого, частку можна визначити також згідно алгоритму ділення зсувом вліво діленого, надалі - залишку, при фiксованiй позицii дiльника:
- перед початком процедури дiлене також має подвоєну довжину порiвняно iз дiльником; дiльник змiщений максимально вл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т.
На мал.11 наведені блок-схеми алгоритмів ділення зсувом діленого A вліво (а) та дільника B вправо (б).
2. Алгоритм ділення зсувом вліво діленого, надалі- залишку.
Початковий стан: 0000000011110000 - ділене
0000011100000000 - дільник
1) 0000000111100000 - ділене
-0000011100000000 - дільник
віднімання не відбувається, до частки - 0,
2) 0000001111000000 - ділене
-0000011100000000 - дільник
віднімання не відбувається, до частки - 0,
а) б)
Мал.11. Блок-схема алгоритму ділення зсувом діленого A влiво (а) та зсувом дільника B вправо (б)
3) 0000011110000000 - ділене
-0000011100000000
0000000010000000 – залишок, до частки - 1,
4) 0000000100000000 - залишок
-0000011100000000
віднімання не відбувається, до частки - 0,
5) 0000001000000000 - залишок
-0000011100000000
віднімання не відбувається, до частки - 0,
6) 0000010000000000 - залишок
-0000011100000000
віднімання не відбувається, до частки - 0,
7) 0000100000000000 - залишок
-0000011100000000
0000000100000000 - залишок
до частки - 1,
8) 0000001000000000 - залишок кінцевий,
-0000011100000000
віднімання не відбувається, до частки - 0.
Частка - 00100010, залишок - 00000010.
Алгоритм ділення зсувом вліво діленого, надалі - залишку, дозволяє зберігати дільник в байтовому регістрі та провадити необхідні арифметичні операції з 8-розрядними операндами, що обумовило переважну реалізацію програм ділення на основі цього алгоритму.
Для ділення знакових двійкових чисел необхідно додатково виконати операції визначення знаку частки, модулів діленого та дільника, переведення частки в додатковий код.
Приклад. Потактно виконати дiлення беззнакових змiнних Х та У. Використати алгоритм дiлення зсувом вліво діленого Х, надалі - залишку. Шiстнадцятковi значення змiнних : X = 6E43, У = C4.
Початковий стан: 0110 1110 0100 0011 - ділене Х
1100 0100 - дільник У
такт 1: 1101 1100 1000 0110 - ділене зсунуте влiво
-1100 0100 - дільник
0001 1000 1000 0110 - залишок вiд дiленого, до частки - 1,
такт 2: 0011 0001 0000 1100 - залишок, зсунутий влiво
-1100 0100 - дільник
вiднiмання не вiдбувається, до частки - 0.
Вiднiмання не вiдбувається також в тактi 3, в якому до частки занесеться нульовий бiт.
Такт 4: 1100 0100 0011 0000 - залишок, зсунутий влiво
-1100 0100 - дільник
0000 0000 0011 0000 - залишок, до частки - 1.
В наступних чотирьох тактах вiднiмання не вiдбуватиметься, до частки занесуться чотири нульовi бiти. Останнiй залишок зсунеться чотири рази влiво, що буде його кiнцевою формою:
частка - 1001 0000; залишок - 0000 0011.
Перевiримо результат:
X дec = 28227; У дec = 196; X / У = 28227 / 196 = 144.02;
частка дес = 144; залишок дес = 3;
частка * У + залишок = 144 * 196 + 3 = 28224 + 3 = 28227.
