- •1. Основні теоретичні відомості
- •1.1 Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання двiйкових чисел у прямому коді
- •1.2 Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання у додатковому коді
- •1.3 Модифікований додатковий код I правила виконання операції алгебраїчного додавання у модифікованому додатковому коді
- •1.4 Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання в оберненому коді
- •2 Контрольні питання
- •3 Індивідуальні контрольні завдання
- •Вимоги до оформлення, захисту та оцінювання лабораторних робіт
- •Зразок оформлення титульного аркуша звіту про виконання лабораторної роботи
1.3 Модифікований додатковий код I правила виконання операції алгебраїчного додавання у модифікованому додатковому коді
Для виявлення переповнення розрядної сітки, до знакової частини зображення числа вводять допоміжний розряд, який називають розрядом переповнення. Таке подання числа називається модифікованим.
Модифікований додатковий код відрізняється від звичайного додаткового коду використанням двох знакових розрядів, а функція кодування для нього є наступною:
Знак + числа подається як 00, а знак – подається як 11.
Ознакою переповнення розрядної сітки при додаванні в модифікованому додатковому коді є різні цифри в знакових розрядах суми.
Для усунення переповнення, необхідно: зсунути результат на один розряд праворуч; збільшити масштабний коефіцієнт; у правому знаковому розряді результату продублювати вміст лівого знакового розряду (оскільки лівий знаковий розряд завжди зберігає правильний код знаку результату).
1.4 Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання в оберненому коді
Якщо знаковий розряд числа має вагу (pn+1 – pk), на відміну від pn+1 для додаткового коду, то кількісний еквівалент числа А=aзнa-1…a-n…a-k, заданого в позиційній системі числення з основою р, буде визначатися виразом
.
Такі коди називають оберненими, оскiльки взаємне перетворення від’ємних чисел не вимагає залучення арифметичних операцій.
Додатні числа в оберненому коді мають таке саме зображення, як і в прямому та додатковому кодах.
Зв'язок між значеннями цифр прямого коду аi і цифр оберненого коду аi|| має наступний вид: аi + аi|| = p – 1, i = –k, … ,n...
Взаємне перетворення прямого й оберненого кодів здійснюється як порозрядна операція взяття доповнення до р - 1від заданих цифр.
Обернений код від’ємного дробу дорівнює його інверсному значенню й утворюється за наступним правилом: у знаковому розряді числа проставляється 1; усі інші цифри заміняються на взаємообернені.
Перехід від оберненого коду до прямого є аналогічним.
Функція кодування двійкових чисел в оберненому коді є наступною:
Перевагою оберненого коду є простий зв'язок із прямим кодом: перетворення числа з прямого коду в обернений і навпаки є порозрядною операцією, що спрощує та прискорює перетворення чисел.
Особливістю оберненого коду є те, що при одержанні суми подекуди виникає необхідність корекції результату на 2-n, оскiльки інверсне значення чисел відрізняється від їх доповнення на одиницю молодшого розряду.
У оберненому коді, як і в додатковому, операція віднімання замінюється операцією додавання.
Знаковий розряд і цифрова частина числа розглядаються також, як єдине ціле, унаслідок чого машина оперує з від’ємними числами, як iз неправильними дробами.
Правильний знак суми виходить автоматично в процесі додавання цифр знакових розрядів операндів та одиниці переносу з цифрової частини, якщо вона є.
Характерною рисою оберненого коду є наявність циклічного переносу (якщо він виникає) зі знакового розряду до молодшого розряду цифрової частини, завдяки якому здійснюється корекція суми на 2-n.
Зазначена вище особливiсть обумовлена тим, що додавання здійснюється за модулем 2 – 2-n.
Розглянемо 4 можливих випадки додавання двох чисел в оберненому коді за умови |A| > |B| і |A| + |B| < 1
Випадок 1. А > 0; В > 0; С > 0.
[A]о = A; [B]о = B;
[С]о = С = [A]о + [B]о = А + В.
Оскiльки обернений код додатних чисел не відрізняється від самих чисел, то визначення їх суми збігається з її одержанням у прямому коді.
Випадок 2. А > 0; В < 0; С > 0.
Сума є додатною, а тому результат повинен вийти в прямому коді:
[A]о = A; [B]о = 2 – 2-n + B;
[С]о = С = [A]о + [B]о = А + 2 – 2-n + В.
Отримана сума відрізняється від істинної на (2 – 2-n), тобто потрібна корекція на дану величину.
Корекція на 2 виходить автоматично, оскiльки для зображення 2 у розрядній сітці комп`ютеру нема місця.
Корекцію на 1 молодшого розряду одержують шляхом додавання в молодший розряд суми одиниці переповнення, що виникає при додаванні цифр знакових розрядів.
Тобто виконується так званий циклічний перенос.
Приклад. Задано А = 0,10101, В = –0,01001. Знайти [C]о
[A]о = 0,10101
[
B]о
= 1,10110
10,01011
+1
[C]о = 0,01100
Випадок 3. А < 0; В > 0; С < 0.
Сума є від’ємною, а тому результат повинен вийти в оберненому коді:
[A]о = 2 – 2-n + A; [B]о = B; [С]о = С = [A]о + [B]о = 2 – 2-n + A+ В.
Тобто результат корекції не вимагає.
Приклад. Задано А = –0,10101, В = 0,01001. Знайти [C]о
[A]о = 1,01010
[ B]о = 0,01001
[C]о = 1,10011
У другому та третьому випадках, при А = В результат дорівнює –0, тобто маємо 1,11...11.…11.
Випадок 4. А < 0; В < 0; С < 0.
Сума є від’ємною, а тому результат повинен вийти в оберненому коді:
[A]о = 2 – 2-n + A; [B]о = 2 – 2-n +B;
[С]о = 2 – 2-n + С = [A]о + [B]о = 2 – 2-n + A+ 2 – 2-n + В.
Як і в другому випадку, необхідна корекція результату тільки на одиницю молодшого розряду, оскiльки для зображення 2 у розрядній сітці комп`ютеру нема місця. Виправлення вноситься аналогічно другому випадку.
[A]о = 1,01010
[ B]о = 1,10110
11,00000
+1
[C]о = 1,00001
Очевидно, що в усіх розглянутих випадках додавання кодів, доданки можна поміняти місцями, і при цьому код суми не зміниться.
Ланцюжок циклічного переносу, необхідний для реалізації корекції суми на величину 2-n, являє собою ланцюг переносу зі знакового розряду суматору до молодшого розряду, тобто суматор замикається в кільце.
Даний ланцюжок може залишатися постійно замкнутим, оскiльки перенос зі знакового розряду виникає тільки тоді, коли дійсно необхідно реалізувати корекцію суми.
Час, необхідний для одержання результату, зростає незначно.
У цілому, за апаратурними витратами, часом реалізації та структурою алгоритму, алгебраїчне додавання обернених кодів є еквівалентним додаванню додаткових кодів.
Обернений код є досить зручним для виконання операції алгебраїчного додавання, якщо врахувати простоту перекладу від’ємних чисел із прямого коду в обернений і навпаки. Виконувати операції множення та ділення в оберненому коді нема смислу.
У оберненому коді, переповнення розрядної сітки можливе при неправильному виборі масштабних коефіцієнтів у першому й четвертому випадках. Ознакою переповнення, як і в інших кодах, є відмінність знаку результату від знаків доданків.
Таким чином, для заміни операції вiднiмання операцією додавання необхідно зробити спеціальне кодування чисел.
У сучасних комп`ютерах, операції в режимі фіксованої коми виконуються, як правило, над цілими числами. Від’ємні числа зберігаються в оперативній пам'яті та беруть участь в операціях у оберненому коді.
Оскільки операції виконуються над числами, вирівняними по молодших розрядах, то операнди, якими є додатні цілі числа, що займають тільки частину розрядів слова, мають у всіх розрядах ліворуч старшої значущої цифри 0, а від’ємні – одиниці.
За необхідності, подовження операндів убік старших розрядів здiйснюється простим додаванням розрядів, вміст яких дорівнює вмісту знакового розряду (0 або 1).
Знакові розряди беруть участь в операціях додавання-вирахування нарівні з цифровими. Попередній аналіз знакових розрядів операндів не здiйснюється, оскiльки, при виконанні команди віднiмання, від'ємник автоматично перетвориться на інверсний код.
По закінченні процесу додавання, здiйснюється аналіз результату та вироблення його ознаки: більше, менше, дорівнює 0, переповнення.
