我想使用位符号为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
范围?
答案 0 :(得分:0)
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
)。