Java:短最小值->不兼容类型:必填:短,发现:整数

时间:2019-01-20 13:27:14

标签: java int bit-manipulation short

我想使用位符号为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 :(得分:0)

0b1000_0000_0000_0000int文字。因此,它表示正值32768,它超出了short类型的范围(Short.MAX_VALUE32767)。

另一方面,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)。