Java: короткое минимальное значение -> Несовместимые типы: Обязательный: короткий, Найдено: int - PullRequest
0 голосов
/ 20 января 2019

Я хочу присвоить минимальное значение short, используя битовую нотацию:

short s = 0b1000_0000_0000_0000;

Но я получаю сообщение: Несовместимые типы: Обязательные: короткие, Найдено: int

Если я делаю то же самое для значения int, все в порядке:

int i = 0b1000_0000_0000_0000__0000_0000_0000_0000;

Где проблема? Почему 0b1000_0000_0000_0000; превышает short int диапазон?

1 Ответ

0 голосов
/ 20 января 2019

0b1000_0000_0000_0000 является литералом int.Поэтому он представляет положительное значение 32768, которое находится за пределами диапазона типа short (Short.MAX_VALUE равно 32767).

С другой стороны, 0b1000_0000_0000_0000__0000_0000_0000_0000 также является int литерал, поэтому его можно назначить переменной int.В этом случае оно представляет отрицательное значение - Integer.MIN_VALUE.

Если вы хотите присвоить s 16 младших разрядов 0b1000_0000_0000_0000, используйте:

short s = (short)0b1000_0000_0000_0000;

Теперь s будет содержать -32768 (что бывает Short.MIN_VALUE).

...