Целые числа в Java подписаны , поэтому один бит зарезервирован для представления положительного или отрицательного числа.Представление называется «запись двоичного дополнения». При таком подходе максимальное положительное значение, представленное n битами, задается как
(2 ^ ().n - 1)) - 1
, а соответствующее минимальное отрицательное значение задается как
- (2 ^ ( n - 1))
Аффинный аспект положительных и отрицательных границ обусловлен нулем.Ноль занимает слот, оставляя четное число отрицательных чисел и нечетное число положительных чисел.Если вы представите представленные значения в виде меток на кружке, например, часов на циферблате, вы увидите, что ноль больше относится к положительному диапазону, чем к отрицательному диапазону.Другими словами, если считать ноль в качестве положительного, вы обнаружите больше симметрии в диапазонах положительных и отрицательных значений.
Чтобы изучить это представление, начните с малого.Возьмите, скажем, три бита и запишите все числа, которые можно представить:
Можете ли вы написать трехбитовую последовательность, которая определяет каждыйиз этих чисел?Как только вы поймете, как это сделать, попробуйте еще раз.Оттуда вы представляете, как он расширяется до 32 или 64 битов.
Эта последовательность образует «колесо», где каждое формируется путем добавления одного к предыдущему, с отмеченным циклом перехода от 3 до -4.Этот эффект обтекания (который также может возникать при вычитании) называется «по модулю арифметики».