В большинстве случаев компьютеры используют так называемое дополнение 2 для представления целых чисел со знаком.
Способ, которым работает дополнение 2, заключается в том, что возможные значения находятся в огромном цикле от 0 до MAX_VALUE, до MIN_VALUE, до нуля и т. Д.
Таким образом, минимальным значением является максимальное значение +1 - 01111111 = 127
и 10000000 = -128
.
Это имеет приятное свойство вести себя точно так же, как арифметика без знака - если я хочу сделать -2 + 1
, у меня есть 11111110 + 00000001 = 11111111 = -1
, используя все то же оборудование, что и для добавления без знака.
Причина, по которой в нижнем конце есть дополнительное значение, заключается в том, что мы выбираем, чтобы все числа с установленным старшим битом были отрицательными, что означает, что 0 убирает значение с положительной стороны.