Дополнительный код
Для получения дополнительного кода отрицательного числа можно использовать следющий алгоритм:
1. Модуль числа записать прямым кодом в n двоичных разрядах;
2. Получить обратный код числа; для этого значения всех бит инвертировать (все единицы заменить на нули и все нули заменить на единицы);
3. К полученному обратному коду прибавить единицу.
Пример 2.3. Записать дополнительный код отрицательного числа –2002 для 16-ти разрядного компьютерного представления.
| Прямой код | |-200210| | 1 0000111110100102 |
| Обратный код | инвертирование | 1 1111000001011012 |
| прибавление единицы | 1 1111000001011012 + 00000000000000012 | |
| Дополнительный код | 1 1111000001011102 |
Пример 2.4. Выполнить арифметическое действие
в машинном коде.
Решение. Представим положительное число в прямом, а отрицательное число в дополнительном коде:
| Десятичное число | Прямой код | Обратный код | Дополнительный код | ||
| 0 000101110111000 | |||||
| -5000 | 1 001001110001000 | 1 110110001110111 | 1 110110001110111 + 000000000000001 1 110110001111000 | ||
| Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде: | |||||
| 3000-5000 | 0 000101110111000 + 1 110110001111000 1 111100000110000 | ||||
Ответ получен в дополнительном коде, так как в знаковом разряде 1. Переведем полученный дополнительный код в десятичное число:
1. Инвертируем дополнительный код: 0000011111001111;
2. Прибавим к полученному коду 1 и получим модуль отрицательного числа:
| + 0000000000000001 |
3. Переведем в десятичное число и припишем знак отрицательного числа: -2000.
Положительные числа в дополнительном коде записываются так же, как и в прямом. Нуль в дополнительном коде имеет единственное представление:

Обратный и дополнительный коды с точки зрения простоты выполнения операций над числами равноценны. Однако операции с удвоенной разрядностью в дополнительном коде выполняются проще, поэтому его чаще используют.






