Зворотний код - метод обчислювальної математики, що дозволяє відняти одне число з іншого, використовуючи тільки операцію додавання над натуральними числами. Раніше метод використовувався в механічних калькуляторах (арифмометрах). Сьогодні використовується в основному в сучасних комп'ютерах.
Зворотний n-розрядний двійковий код позитивного цілого числа складається з однорозрядного коду знака (двійковій цифри 0), за яким слідує n - 1-розрядне двійкове подання модуля числа (зворотний код позитивного числа збігається з прямим кодом).
Зворотний n-розрядний двійковий код негативного цілого числа складається з однорозрядного коду знака (двійковій цифри 1), за яким слідує n - 1-розрядне двійкове число, яке представляє собою Інвертований n - 1-розрядне представлення модуля числа. Слід зазначити, що для зміни знака числа досить проинвертировать нд ?? е його розряди не звертаючи уваги знаковий це розряд або інформаційні.
Для перетворення негативного числа в позитивне теж застосовується операція инвертирования. Цим зворотні коди зручні в застосуванні. [1] Як недолік слід зазначити, що в зворотних довічних кодах є два коду числа 0:''положітельний нуль'' 0000000000 та''отріцательний нуль'' 1111111111 (наведено 10-розрядні зворотні коди). Це призводить до деякого ускладнення операції підсумовування. З цієї причини в подальшому перейшли до додаткових кодами записи знакових цілих чисел.
n-розрядний зворотний код дозволяє представити числа від - 2n - 1 + 1 до + 2n - 1 - 1.
Додатковий код - найбільш поширений спосіб представлення негативних цілих чисел в комп'ютерах. Він дозволяє замінити операцію віднімання на операцію складання і зробити операції додавання і віднімання однаковими для знакових і беззнакових чисел, ніж спрощує архітектуру ЕОМ. Додатковий код негативного числа можна отримати інвертуванням модуля двійкового числа (перше доповнення) і додатком до інверсії одиниці (друге доповнення), або відніманням числа з нуля.
Додатковий код (доповнення до 2) двійкового числа виходить додаванням 1 до молодшого значущій розряду його доповнення до 1.
Доповнення до 2 двійкового числа визначається як величина отримана вирахуванням числа з найбільшою мірою двох (з 2N для N-бітного доповнення до 2).
Подання числа в додатковому коді
При записи числа в додатковому коді старший розряд є знаковим. У разі якщо його значення дорівнює 0, то в інших розрядах записано позитивне двійкове число, що збігається з прямим кодом. У разі якщо число, записане в прямому коді, негативне, то вс ?? е розряди числа інвертуються, а до результату додається 1. До одержали числу дописується старший (знаковий) розряд, рівний 1.
Двійкове 8-ми розрядне число із знаком в додатковому коді може представляти будь-яке ціле в діапазоні від -128 до +127. У разі якщо старший розряд дорівнює нулю, то найбільше ціле число, ĸᴏᴛᴏᴩᴏᴇ повинна бути записано в останніх 7 розрядах одно 27 - 1, що дорівнює 127.
Перетворення додаткового коду
Перетворення числа з прямого коду в додатковий здійснюється за наступним алгоритмом.
· У разі якщо число, записане в прямому коді, позитивне, то до нього дописується старший (знаковий) розряд, рівний 0, і на цьому перетворення закінчується;
· У разі якщо число, записане в прямому коді, негативне, то вс ?? е розряди числа інвертуються, а до результату додається 1. До одержали числу дописується старший (знаковий) розряд, рівний 1.
Додатковий код для десяткових чисел
Той же принцип можна використовувати і в комп'ютерному поданні десяткових чисел: для кожного розряду цифра X замінюється на 9-X, і до одержали числа додається 1. Наприклад, при використанні чотиризначних чисел -0081 замінюється на 9919 (9919 + 0081 = 0000, п'ятий розряд викидається).
· Один і той же регістр може зберігати як n-бітове позитивне число, так і (n-1) -бітовое число зі знаком, з загальними для обох форматів операціями додавання, віднімання і лівого зсуву.
· Більш зручна упаковка чисел в бітові поля.
· Відсутність числа''мінус ноль''.
· Додатковий код неочевидний для новачків.
· У складних форматах (таких, як плаваюча кома або двійковій-десятковий код) більшість переваг анулюються.