Найбільш важливі властивості зворотного коду чисел:
· Складання позитивного числа С з його негативним значенням в зворотному коді дає т.зв. машинну одиницю МЕОКАМ = 1 | 11 ... 11, що складається з одиниць в знаковому і в значущих розрядах числа;
· Нуль в зворотному коді має двояке значення. Він може бути як позитивним числом - 0 | 00 ... 00, так і негативним 1 | 11 ... 11. Значення негативного числа збігається з МЕОКАМ. Двоїсте уявлення 0 стало причиною того, що в сучасних ЕОМ все числа подаються не зворотним, а додатковим кодом.
Додатковий код поклади-ного числа збігається з його прямим кодом. Для негативного числа додатковий код утворюється шляхом отримання зворотного коду і додаванням до молодшого розряду одиниці (2 0 - для цілих чисел, 2-л - для дрібних).
Основні властивості додаткового коду:
· Складання додаткових кодів позитивного числа С з його негативним значенням дає т.зв. машинну одиницю додаткового коду:
Медком = МЕОКАМ + 2 0 = 10 | 00 ... 00, тобто число 10 (два) в знакових розрядах числа;
· Додатковий код називається так тому, що уявлення негативних чисел є доповненням прямого коду чисел до машинної одиниці медку.
Модифіковані зворотні і додаткові коди
Модифіковані зворотні і додаткові коди двійкових чисел відрізняються відповідно від зворотних і додаткових кодів подвоєнням значень знакових розрядів. В модифікованих зворотному і додатковому кодах під знак числа відводиться не один, а два розряду: «00» відповідає знаку «плюс», «11» - знаку «мінус». Будь-яка інша комбінація ( «01» або «10»), отримавши-шаяся в знакових розрядах, є ознакою переповнення розряд-ний сітки. Додавання чисел в модифікованих кодах нічим, від-Ліча від складання в звичайних зворотному і додатковому кодах.
Значення знакових розрядів «01» свідчить про позитивний переповненні розрядної сітки, а «10» - про негативний переповненні. В даний час практично у всіх комп'ютерах роль здвоєних розрядів для фіксації переповнення розрядної сітки грають переноси, що йдуть в знаковий і з знакового розряду.
Додавання і віднімання чисел зі знаком в додатковому коді
Якщо обидва числа мають n-розрядне представлення, то алгебраїчна сума буде отримана за правилами двійкового складання (включаючи знаковий розряд), якщо відкинути можливе перенесення з старшого розряду. Якщо числа належать діапазону представимо даних і мають різні знаки, то сума завжди буде лежати в цьому діапазоні. Переповнення може мати місце, якщо обидва cлагаемих мають однакові знаки.
Приклад 1:
6 - 4 =?
6 - позитивне число з кодом 0110
-4 - негативне число з додатковим кодом 1100
(Перенесення ігнорується): 6 - 4 = 2.
-5 + 2 =?
2 - позитивне число з кодом 0010
-5 - негативне число з додатковим кодом 1011
Число з кодом 1101 є негативним, модуль цього числа має код 00112 = 310.
Арифметичні дії в машинних кодах.
Додавання (віднімання). Операція віднімання приводиться до операції додавання шляхом перетворення чисел в зворотний або додатковий код згідно з таблицею.
Тут А і В невід'ємні числа. Дужки в представлених виразах вказують на заміну операції віднімання операцією додавання зі зворотним або додатковим кодом відповідного числа. Додавання двійкових чисел здійснюється послідовно, поразрядно відповідно до таблиці. При виконанні додавання цифр необхідно дотримуватися таких правил:
1. Складові повинні мати однакове число розрядів. Для вирівнювання розрядної сітки доданків можна дописувати незначущі нулі зліва до цілої частини числа і незначущі нулі справа до дробової частини числа.
2. Знакові розряди беруть участь у складанні так само, як і значущі.
3. Необхідні перетворення кодів виробляються зі зміною знаків чисел. Приписані незначущі нулі змінюють своє значення при перетвореннях за загальним правилом.
4. При перетворенні одиниці переносу зі старшого знакового розряду, в разі використання ОК, ця одиниця складається з молодшим числовим розрядом. При використанні ДК одиниця перенесення втрачається. Знак результату формується автоматично, результат представляється в тому коді, в якому представлені вихідні складові.
Приклад 1. Скласти два числа: А10 = 7, В10 = 16.
Вихідні числа мають різну розрядність, необхідно провести вирівнювання розрядної сітки:
Додавання в зворотному або додатковому коді дає один і той же результат:
Приклад 2. Скласти два числа: А10 = +16, В10 = -7 в ОК і ДК.
По таблиці необхідно перетворення А + (- У), в якій другий член перетворюється з урахуванням знака
При додаванні чисел в ОК і ДК були отримані переноси в знаковий розряд і з знакового розряду. У разі ОК перенесення з знакового розряду вимагає додаткового збільшення одиниці молодшого розряду (п.4 правил). У разі ДК цей перенос ігнорується.