Java:短最小值 -> 不兼容类型:必需:short,找到:int

标签 java int bit-manipulation short

我想通过使用位表示法为 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_VALUE32767)。

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

相关文章:

java - 显示数据库中的数据表

java - 如何从 Jsp 页面 (Web) 调用 Jbutton(Swing)?

java - 给定掩码大小,有效地创建具有低位集的掩码

c - 对 byte 和 int 进行按位运算

将 ascii 码转换为整数

c++ - 将位从一个数组转换为另一个数组?

java - 对于 Java 来说,是否有 JMagick 和 ImageBuffer/ImageIO 的替代方案来调整/裁剪图像?

java - 你如何从游标中获取类型?

c - 如果我不说 int i=0 就会出现段错误

java - 非法转换异常?