# Знаковое обозначение. Прямой, обратный и дополнительный код
Позволяет записать отрицательные числа
Прямой код: отрицательное число отличается от положительного только значением последнего бита (1 у отрицательных). Например: 7 = 0111, -7 = 1111. 0 = страхолюдина
Мне лень это расписывать - в таблице все понятно
| Число | Прямой код | Обратный код | Дополнительный код |
| -------- | -------- | -------- | ---- |
| -8 | - | - | 1000 |
| -7 | 1111 | 1000 | 1001 |
| -6 | 1110 | 1001 | 1010 |
| -5 | 1101 | 1010 | 1011 |
| -4 | 1100 | 1011 | 1100 |
| -3 | 1011 | 1100 | 1101 |
| -2 | 1010 | 1101 | 1110 |
| -1 | 1001 | 1110 | 1111 |
| 0 | 10000000 | 11110000 | 0000 |
| 1 | 0001 | 0001 | 0001 |
| 2 | 0010 | 0010 | 0010 |
| 3 | 0011 | 0011 | 0011 |
| 4 | 0100 | 0100 | 0100 |
| 5 | 0101 | 0101 | 0101 |
| 6 | 0110 | 0110 | 0110 |
| 7 | 0111 | 0111 | 0111 |
### Дополнение до 1 (обратный код)
- если число положительное, то в старший разряд (который является знаковым) записывается ноль, а далее записывается само число;
- если число отрицательное, то код получается инвертированием представления модуля числа (получается обратный код);
- если число является нулем, то его можно представить двумя способами: +0 (000…000) или −0 (111…111).
### Дополнение до 2 (дополнительный код)
Дополнение до 2 двоичного числа определяется как величина полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного дополнения до 2). При записи числа в дополнительном коде старший разряд является знаковым. В нашем случае из 11111111 вычитается значение регистра