Додатковий код (подання числа) - це
Додатковий код (подання числа)
Цей термін має також інші значення див. Додатковий код.
Додатковий код (англ. Two's complement. Іноді twos-complement) - найбільш поширений спосіб представлення негативних цілих чисел в комп'ютерах. Він дозволяє замінити операцію віднімання на операцію складання і зробити операції додавання і віднімання однаковими для знакових і беззнакових чисел, ніж спрощує архітектуру ЕОМ. Додатковий код негативного числа можна отримати інвертуванням модуля двійкового числа (перше доповнення) і додатком до інверсії одиниці (друге доповнення), або відніманням числа з нуля.
Додатковий код (доповнення до 2) двійкового числа виходить додаванням 1 до молодшого значущій розряду його доповнення до 1. [1]
Доповнення до 2 двійкового числа визначається як величина отримана вирахуванням числа з найбільшою мірою двох (з 2 N для N-бітного доповнення до 2).
Подання негативного числа в додатковому коді
При записи числа в додатковому коді старший розряд є знаковим. Якщо його значення дорівнює 0, то в інших розрядах записано позитивне двійкове число. збігається з прямим кодом. Якщо число, записане в прямому коді, негативне, то всі розряди числа інвертуються, а до результату додається 1. До одержали числу дописується старший (знаковий) розряд, рівний 1.
Двійкове 8-ми розрядне число із знаком в додатковому коді може представляти будь-яке ціле в діапазоні від -128 до +127. Якщо старший розряд дорівнює нулю, то найбільше ціле число, яке може бути записано в останніх 7 розрядах одно, що дорівнює 127.
Код двійкового представлення (8 біт)
Додатковий код для десяткових чисел
Той же принцип можна використовувати і в комп'ютерному поданні десяткових чисел: для кожного розряду цифра X замінюється на 9-X, і до одержали числа додається 1. Наприклад, при використанні чотиризначних чисел -0081 замінюється на 9919 (9919 + 0081 = 0000, п'ятий розряд викидається).
При застосуванні тієї ж ідеї до звичної 10-річної системі числення вийде (наприклад, для гіпотетичного процесора використовує 10-річної систему числення):
10-річної системі числення
( "Звичайна" запис)
10-річної системі числення,
додатковий код
Перетворення в додатковий код
Перетворення числа з прямого коду в додатковий здійснюється за наступним алгоритмом.
- Якщо число, записане в прямому коді, позитивне, то до нього дописується старший (знаковий) розряд, рівний 0, і на цьому перетворення закінчується;
- Якщо число, записане в прямому коді, негативне, то всі розряди числа інвертуються, а до результату додається 1. До одержали числу дописується старший (знаковий) розряд, рівний 1.
Приклад. Перетворимо негативне число -5, записане в прямому коді, в додатковий. Прямий код числа -5, взятого по модулю:
Інвертуємо все розряди числа, отримуючи таким чином зворотний код:
Додамо до результату 1
Допишемо зліва знаковий одиничний розряд
Для зворотного перетворення використовується той же алгоритм. А саме:
Інвертуємо все розряди числа, отримуючи таким чином зворотний код:
Додамо до результату 1 і перевіримо, склавши з додатковим кодом
p-адіческіе числа
В системі p -адіческіх чисел зміна знака числа здійснюється перетворенням числа в його додатковий код. Наприклад, якщо використовується 5-річної системі числення, то число, протилежне 1000. (1) одно 4444. (-1).
Реалізація алгоритму перетворення в зворотний код (для 8-бітних чисел)
Переваги і недоліки
переваги
- Один і той же регістр може зберігати як n -бітовое позитивне число, так і (n -1) -бітовое число зі знаком, з загальними для обох форматів операціями додавання, віднімання і лівого зсуву.
- Більш зручна упаковка чисел в бітові поля.
- Відсутність числа «мінус нуль».
недоліки
- Додатковий код неочевидний для новачків.
- У складних форматах (таких, як плаваюча кома або двійковій-десятковий код) більшість переваг анулюються.
- Модуль найбільшого цифри не дорівнює модулю найменшого числа. Приклад: знакове ціле 8-бітове. Максимальне число: 12710 == 7F16 == 011111112. Мінімальна кількість: -12810 == 8016, додатковий код == 100000002, додатковий код. Відповідно, не для будь-якого числа існує протилежне. Операція зміни знаку може вимагати додаткової перевірки.
- Порівняння. На відміну від складання, числа в додатковому коді можна порівнювати, як беззнакові, або віднімати без розширення розрядності. Один з методів полягає в порівнянні як беззнакові вихідних чисел з інвертованим знаковим бітом.
Приклад програмного перетворення
Якщо відбувається читання даних з файлу або області пам'яті, де вони зберігаються в двійковому додатковому коді (наприклад, файл WAVE), може виявитися необхідним перетворити байти. Якщо дані зберігаються в 8 бітах, необхідно, щоб значення 128-255 були негативними.
C # .NET / C style
література
Дивитися що таке "Додатковий код (подання числа)" в інших словниках:
Зворотний код (подання числа) - зворотний код метод обчислювальної математики, що дозволяє відняти одне число з іншого, використовуючи тільки операцію додавання над натуральними числами. Раніше метод використовувався в механічних калькуляторах (арифмометрах). В даний час ... ... Вікіпедія
Зворотний код - зворотний код метод обчислювальної математики, що дозволяє відняти одне число з іншого, використовуючи тільки операцію додавання над натуральними числами. Раніше метод використовувався в механічних калькуляторах (арифмометрах). В даний час ... ... Вікіпедія
Число - Цей термін має також інші значення див. Число (значення). Число основне поняття математики [1], що використовується для кількісної характеристики, порівняння і нумерації об'єктів. Виникнувши ще в первісному суспільстві з потреб ... ... Вікіпедія
Число (матем.) - див. Також: Число (лінгвістика) Число абстракція, яка використовується для кількісної характеристики об'єктів. Виникнувши ще в первісному суспільстві з потреб рахунку, поняття числа змінювалося і збагачувалося і перетворилося в найважливіше математичне ... Вікіпедія
Ціле (тип даних) - ціле, цілочисельний тип даних (англ. Integer), в інформатиці один з найпростіших і найпоширеніших типів даних в мовах програмування. Служить для представлення цілих чисел. Безліч чисел цього типу являє собою ... ... Вікіпедія
Позиційна система числення - Системи числення в культурі Індо арабська система числення Арабська Індійські Таміла Бірманська Кхмерська Лаоська Монгольська Тайська Східноазійські системи числення Китайська Японська Сучжоу Корейська В'єтнамська Рахункові палички ... ... Вікіпедія
Цілий тип - (Integer) один з найпростіших і найпоширеніших типів даних в мовах програмування. Цілі типи поділяються на беззнакові (без знака) і знакові (зі знаком). Як правило, діапазон цілих чисел визначається кількістю байтів в ... ... Вікіпедія