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