Для спрощення арифметичних операцій числа в цифрових пристроях подаються спеціальними кодами - прямим, оберненим і додатковим. При роботі з такими кодами вводиться поняття знакового розряду – старший розряд числа, який приймає значення нуля (додатне число) або одиниці (від’ємне число).
Слід зазначити, що для додатних чисел всі три коди є однаковими.
Прямий код двійкового числа містить цифрові розряди (звичайний двійковий код числа), ліворуч від яких записується знаковий розряд. Додавання в прямому коді чисел, що мають однакові знаки, виконуються досить просто. Цифрові розряди чисел складаються за правилами арифметики і сумі привласнюється код знака доданків. Значно складніше реалізується в прямому коді операція алгебричного віднімання, тобто додавання чисел, що мають різні знаки У цьому разі доводиться визначати більше за модулем число, вираховувати числа і привласнювати різниці знак більшого за модулем числа.
За допомогою оберненого і додаткового кодів операція віднімання (чи алгебраїчного додавання) зводиться до арифметичного додавання, спрощується визначення знака результату операції, а також полегшується вироблення ознак переповнення результату (коли в результаті арифметичних операцій число стає більшим від максимально допустимого для цієї форми значення).
Обернений код від'ємного числа одержується за таким правилом: у знаковий розряд числа записується одиниця, у цифрових розрядах нулі замінюються одиницями, а одиниці – нулями (відбувається операція інверсії).
Додатковий код від'ємного числа отримують з оберненого коду додаванням одиниці до молодшого розряду.
Досить часто при виконанні операцій додавання та віднімання виникає переповнення розрядної сітки – результат є більшим за розрядністю від початкових чисел (потрібно більше біт при кодуванні).
Для того, щоб цифрові схеми могли зафіксувати та відстежити переповнення розрядної сітки, вводиться поняття модифікованих кодів. Ці коди відрізняються від простих машинних кодів тим, що на зображення знаку відводиться два розряди: “+” - зображується “00”, а “-“ - зображується “11”. Перетворення двійкових чисел у модифіковані прямий, обернений та додатковий коди виконуються за правилами, які були розглянуті раніше.
Поява в знакових розрядах модифікованого коду різних цифр “01” або “10” свідчать про переповнення розрядної сітки. “01” – відповідає переповненню додатного числа, “10” – відповідає переповненню від’ємного числа
Подання від'ємного числа -10910= - 11011012 у прямому коді та його перетворення в обернені і додатковий коди представлено нижче.
Простий машинний код
Модифікований машинний код
Прямий код
1.
Прямий код
1.
Інверсія бітів
Інверсія бітів
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
Обернений код
1.
Обернений код
1.
Додавання 1 до молодшого розряду
Додавання 1 до
молодшого розряду
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
¯
Додатковий код
1.
Додатковий код
1.
Представимо у модифікованих машинних кодах число ±1710 = ________________ 2
+1710
-1710
Прямий код
Прямий код
Обернений код
Обернений код
Додатковий код
Додатковий код
Представимо у модифікованих машинних кодах число ±2910 = ________________ 2