Почему максимальное число в java 2 ^ 31 - 1, а не 2 ^ 31
Извините, если это действительно основной вопрос, но почему есть минус один для положительной стороны?
Это связано с тем, что нуль хранится или что-то еще? Я думал, что вычисление наивысшего возможного десятичного числа для двоичного кода будет состоять только в том, чтобы добавить полномочия в два раза, например, для 3-битного без знака это будет
1*2^0 + 1*2^1 + 1*2^2 = 7
Не следует ли применять одно и то же правило для целых чисел java? Благодаря
Ответы
Ответ 1
Поскольку Java может поддерживать max signed int как 0x7fffffff
, который равен 2 ^ 31-1.
2^31 = 0x80000000 is negative so Positive is 2^31-1
Сравнение двоичного уровня:
10000000000000000000000000000000 --> 2147483648 --> 2^31
01111111111111111111111111111111 --> 2147483647 --> 2^31 -1
^ Sign bit
Ответ 2
То же правило применяется... 7
is 2^3 - 1
. И да, это из-за 0.:)
Напротив, негативы идут на -(2^31)
Итак, 2^31
отрицательные числа, один 0
и 2^31-1
строгие положительные значения, которые добавляют к...
2^31 + 1 + 2^31 - 1 = 2 * 2^31 = 2^32
Ответ 3
Это из-за удобства двух дополнений (что позволяет избежать сохранения двух нулей), а Java хранит числа, используя эту презентацию. Посмотрите здесь.
Ответ 4
Есть 2^31
неотрицательные числа от 0
до 2^31-1
. Итак, да, zero
также сохраняется как целое число. А также есть отрицательные числа 2^31
от -2^31
до -1
.
Ответ 5
Он должен разделить 2 ^ 32.
1/2 отрицательны.
0 подсчитывается с положительным.
В математике 0 не является ни отрицательным, ни положительным.
Он совместим с .NET и MSSQL.
Если вы заметили, что набор, не содержащий негативов, называется unsigned.
Он содержит 0 и не является правильным назвать его положительным.
Поскольку бинарный мир начинается с 0, он воспринимается как положительный.
Ответ от Джека (+1) объясняется тем, почему.
Ответ 6
Если у вас есть n бит, у вас есть 2 ^ (n-1) отрицательные числа (поскольку верхний бит равен 1) и 2 ^ (n-1) неотрицательные числа. Так как нуль является неотрицательным числом, у вас есть до 2 ^ (n-1) -1 положительных чисел, которые также являются максимальными.
Примечание: положительное значение для отрицательного числа не существует, поэтому
-Integer.MIN_VALUE == Integer.MIN_VALUE
Ответ 7
Целочисленные числа Java представляют собой подписанные величины, поэтому один бит зарезервирован для знака, оставляя 31 бит для значения.