---
# System prepended metadata

title: 'Знаковое обозначение. Прямой, обратный и дополнительный код'

---

# Знаковое обозначение. Прямой, обратный и дополнительный код

Позволяет записать отрицательные числа

Прямой код: отрицательное число отличается от положительного только значением последнего бита (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 вычитается значение регистра