我想通过使用位表示法为 short
分配最小值:
short s = 0b1000_0000_0000_0000;
但我收到消息:不兼容的类型:必需:short,找到:int
如果我对 int
值执行相同的操作,则一切正常:
int i = 0b1000_0000_0000_0000__0000_0000_0000_0000;
问题出在哪里?为什么 0b1000_0000_0000_0000;
超出 short int
范围?
最佳答案
0b1000_0000_0000_0000
是一个 int
文字。因此,它表示正值 32768
,超出了 short
类型的范围(Short.MAX_VALUE
为 32767
)。
另一方面,0b1000_0000_0000_0000__0000_0000_0000_0000
也是一个int
文字,因此它可以分配给int
变量。在本例中,它表示负值 - Integer.MIN_VALUE
。
如果您想将 0b1000_0000_0000_0000
的 16 个最低有效位分配给 s
,请使用:
short s = (short)0b1000_0000_0000_0000;
现在 s
将包含 -32768
(恰好是 Short.MIN_VALUE
)。
关于Java:短最小值 -> 不兼容类型:必需:short,找到:int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276905/