Давайте рассмотрим, как представить отрицательные числа в прямом, обратном и дополнительном кодах в формате 1 байт (8 бит). Важно понять, что в 8-битной системе старший бит определяет знак числа: 0 — положительное число, 1 — отрицательное.
Прямой код:
В прямом коде старший бит указывает знак числа, а остальные биты представляют абсолютное значение числа.
-9:
- Положительное 9 в двоичной системе:
00001001
- Прямой код -9:
10001001
-15:
- Положительное 15 в двоичной системе:
00001111
- Прямой код -15:
10001111
-127:
- Положительное 127 в двоичной системе:
01111111
- Прямой код -127:
11111111
-128:
- Положительное 128 в двоичной системе невозможно представить в формате 1 байт, так как 128 выходит за пределы 7 бит. Но в контексте знаковых чисел, это число считается минимально возможным отрицательным числом в дополнительном коде.
- Прямой код -128:
10000000
Обратный код:
В обратном коде старший бит указывает знак числа, а остальные биты представляют инверсию всех битов абсолютного значения числа.
-9:
- Прямой код -9:
10001001
- Инвертируем все биты кроме знакового:
11110110
- Обратный код -9:
11110110
-15:
- Прямой код -15:
10001111
- Инвертируем все биты кроме знакового:
11110000
- Обратный код -15:
11110000
-127:
- Прямой код -127:
11111111
- Инвертируем все биты кроме знакового:
10000000
- Обратный код -127:
10000000
-128:
- Прямой код -128:
10000000
- Инвертируем все биты кроме знакового:
11111111
- Обратный код -128:
11111111
Дополнительный код:
В дополнительном коде старший бит указывает знак числа, а остальные биты представляют инверсию всех битов абсолютного значения числа плюс 1.
-9:
- Обратный код -9:
11110110
- Прибавляем 1:
11110110 + 1 = 11110111
- Дополнительный код -9:
11110111
-15:
- Обратный код -15:
11110000
- Прибавляем 1:
11110000 + 1 = 11110001
- Дополнительный код -15:
11110001
-127:
- Обратный код -127:
10000000
- Прибавляем 1:
10000000 + 1 = 10000001
- Дополнительный код -127:
10000001
-128:
- Обратный код -128:
11111111
- Прибавляем 1:
11111111 + 1 = 00000000
(с переносом в старший бит, который игнорируется)
- Дополнительный код -128:
10000000
В итоге, вот итоговое представление чисел в различных кодах:
-9:
- Прямой код:
10001001
- Обратный код:
11110110
- Дополнительный код:
11110111
-15:
- Прямой код:
10001111
- Обратный код:
11110000
- Дополнительный код:
11110001
-127:
- Прямой код:
11111111
- Обратный код:
10000000
- Дополнительный код:
10000001
-128:
- Прямой код:
10000000
- Обратный код:
11111111
- Дополнительный код:
10000000