Доповняльний код
Матеріал з Вікіпедії — вільної енциклопедії.
Зміни шаблонів/файлів цієї версії очікують на перевірку.
Стабільна версія була перевірена 28 березня 2013.
Доповня́льний код (англ. two’s complement, «доповнення до 2») — найпоширеніший спосіб представлення від'ємних чисел у комп'ютерах. Дозволяє замість команди віднімання використовувати команду додавання, для знакових і беззнакових чисел, що зменшує вимоги до архітектури комп'ютера. Доповняльний код від'ємного числа можна отримати так: інвертувати модуль числа у двійковому вигляді («перше доповнення») і додати одиницю («друге доповнення») або відняти число від нуля. Математично доповняльний код Xдоп = 2N+1 - X, де X — число, яке треба представити у доповняльному коді, N — к-сть розрядів числа.
| Найстарший біт | |||||||||
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | = | 127 |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | = | 126 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | = | 2 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | = | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | = | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | = | −1 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | = | −2 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | = | −127 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | = | −128 |
Восьмирозрядні доповняльні коди
Переваги [ред.]
- Комірка пам'яті може містити як n-бітні додатні числа, так і (n−1)-бітні числа зі знаком, причому операції додавання, віднімання і зсуву вліво однакові для обох форматів.
- Відсутність числа «-0». У коді доповнення до 1 таке число є.
Недоліки [ред.]
- Стосовно складних форматів (таких, як плаваюча кома або двійково-десятковий код) переваги втрачаються.
- Модуль найбільшого числа не дорівнює модулю найменшого. Наприклад, для знакової цілої 8-байтової змінної найбільше число це 12710 = 7F16 = 011111112, а найменше: -12810 = 8016,доп. код = 100000002,доп. код. Відповідно, не для кожного числа можна записати протилежне. Операція зміни знаку може вимагати додаткової перевірки.
Див. також [ред.]
| Ця стаття не містить посилань на джерела. (листопад 2011) |

