Двійкова арифметика
Більшість мікропроцесорів мають команди додавання і віднімання двійкових чисел, деякі, крім того, мають команди множення та ділення. Операції множення та додавання виконуються аналогічно до арифметики десяткових чисел (рисунок 2.3) 1 1 1 1 Переноси 1 1-й доданок +00111011 +59 2-й доданок 00101010 42 сума 1100101(2) 101(10) а) множене х1101 х13 множник 101 5 1-й проміжний добуток 1101 65(10) 2-й проміжний добуток 0000 3-й проміжний добуток 1101 Добуток 1000001(2) б) Рисунок 2.3 - Приклади виконання арифметичних операцій: а) додавання; б) множення.
Однак, якщо потрібно використовувати числа зі знаком, застосовують спеціальний додатковий код, що суттєво спрощує апаратні засоби МП пристроїв. На рисунку 2.4 приведене звичайне зображення регістра МП або комірки пам’яті поза МП.
Рисунок 2.4 - Зображення типового регістра МП чи комірки пам’яті: а) розташування двійкових позицій; б) представлення додатних чисел нулем у знаковому біті; в) представлення від’ємного числа одиницею в знаковому біті.
Як видно з рисунка, всі від’ємні числа мають 1 в старшому розряді. На прикладі розглянемо основні етапи одержання додаткового коду від’ємного числа (наприклад -9).
Одержаний результат є додатковим кодом від’ємного числа -9, оскільки знаковий біт рівний одиниці.
Зворотна процедура одержання десяткового еквівалента числа 11110000, записаного у формі додаткового коду, буде такою:
Оскільки запис у додатковому коді вказує, що число від’ємне, то остаточно будемо мати: 1111 0000=-16. МП не виконує прямого віднімання і оперує над додатковими кодами. Нехай потрібно скласти десяткові числа +7 і -3. Процедура віднімання виконується у такий спосіб:
Знехтувати переповненням.
Старший біт є переповненням 8-розрядного регістра і ним нехтують. Одержана сума 0000 0100(2) еквівалентна +4(10). Розглянемо ще один приклад, віднімання від числа 3 числа 8.
Операції ділення та множення змішаних двійкових чисел вимагають спеціальних алгоритмів, які тут розглядатись не будуть. МП може оперувати також з числами, які представлені в BDC-коді, але при цьому процедури є складнішими. Наприклад, сумування чисел, представлених в двійково-десятковому коді 8421, виконується в два етапи. На першому етапі обчислюється попередня сума Sn, причому сумування відбувається за звичайними правилами двійкової арифметики, але з наступними уточненнями: -якщо в і -тій тетраді Sni попередньої суми утворюється природній перенос, то він враховується в наступній (і +1)-й тетраді; -якщо в і -тій тетраді Sni природного переносу немає, але Sni³10, то рахують, що є штучний перенос, і він знову враховується в (і +1)-й тетраді; -при Sni<10 переносу немає. На другому етапі кожна тетрада Sni коректується за таким правилом: -якщо Sni³10, тобто є штучний або природній перенос, то до неї додають число 6;
-утворений при цьому перенос не враховують. Далі на прикладі природній перенос позначають 1П, штучний - 1Ш.
0,2098 0,0010 00001Ш 10011П 1000 + + 0,37290,0011 0111 0010 1001. 0,5827 0,0101 1000 1100 0001 Попередня сума + 0000 0000 0110 0110 корекція 0,0101 1000 0010 0111 сума
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|