Для представления чисел в 8-разрядной ячейке памяти в формате со знаком используется метод дополнительного кода (two's complement). В этом формате первый бит отводится для знака: 0 для положительных чисел и 1 для отрицательных. Остальные биты используются для представления величины числа. Максимально возможные значения в таком формате для 8-разрядного числа — от -128 до 127.
Внутреннее представление числа 243 в 8-разрядной ячейке памяти в формате со знаком:
Число 243 выходит за пределы диапазона, который может быть представлен в 8-битном формате со знаком (от -128 до 127). Поэтому его нельзя корректно представить в этом формате. Однако, если бы это было необходимо, нужно было бы использовать больше битов, например, 9 или 16 бит.
Внутреннее представление числа -186 в 8-разрядной ячейке памяти в формате со знаком:
Число -186 также выходит за пределы диапазона, который может быть представлен в 8-битном формате со знаком. Это число также нельзя корректно представить в 8-разрядной ячейке памяти.
Для корректного представления чисел 243 и -186 необходимо использовать больше битов. Например, в 16-разрядной системе они могут быть представлены следующим образом:
- Для 243: в 16-разрядной системе беззнаковое представление будет
0000 0000 1111 0011
.
- Для -186: сначала представим 186 в двоичном виде —
1011 1010
. Найдем его дополнительный код для отрицательного числа:
- Инвертируем все биты:
0100 0101
.
- Прибавляем 1:
0100 0101 + 1 = 0100 0110
.
Таким образом, -186 в 16-разрядной системе будет представлено как 1111 1111 0100 0110
.
Если требуется работа с числами, выходящими за пределы 8-битного диапазона, стоит использовать более широкие форматы данных, такие как 16 или 32 бита.