Додатковий код двійкового числа - студопедія
Зворотний код - метод обчислювальної математики, що дозволяє відняти одне число з іншого, використовуючи тільки операцію додавання над натуральними числами. Раніше метод використовувався в механічних калькуляторах (арифмометрах). В даний час використовується в основному в сучасних комп'ютерах.
Зворотний n-розрядний двійковий код позитивного цілого числа складається з однорозрядного коду знака (двійковій цифри 0), за яким слідує n - 1-розрядне двійкове подання модуля числа (зворотний код позитивного числа збігається з прямим кодом).
Приклад. Двійкове подання числа 5 є 101. Зворотний 10-розрядний двійковий код числа +5 записується як 0000000101.
Зворотний n-розрядний двійковий код негативного цілого числа складається з однорозрядного коду знака (двійковій цифри 1), за яким слідує n - 1-розрядне двійкове число, яке представляє собою Інвертований n - 1-розрядне представлення модуля числа. Слід зазначити, що для зміни знака числа досить проинвертировать все його розряди не звертаючи уваги знаковий це розряд або інформаційні.
Приклад. Двійкове подання числа 5 є 101, його 10-розрядний двійкове подання - 0000000101. Зворотний 10-розрядний двійковий код числа -5 є 1111111010.
Для перетворення негативного числа в позитивне теж застосовується операція инвертирования. Цим зворотні коди зручні в застосуванні. [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) -бітовое число зі знаком, з загальними для обох форматів операціями додавання, віднімання і лівого зсуву.
· Більш зручна упаковка чисел в бітові поля.
· Відсутність числа «мінус нуль».
· Додатковий код неочевидний для новачків.
· У складних форматах (таких, як плаваюча кома або двійковій-десятковий код) більшість переваг анулюються.