当你走出“短”范围时会发生什么?

时间:2015-09-13 20:22:13

标签: java range short

当您在短距离“外面”时会发生什么?这是一个小问题。

        int ia = 32767;
        int ib = 32768;
        short sa = (short)ia;
        short sb = (short)ib;

        System.out.println(sa);
        System.out.println(sb);

为什么sa打印出32767和sb -32768?我不明白这个..

3 个答案:

答案 0 :(得分:2)

你刚从

出发
Short.MAX_VALUE --> 32767

Short.MIN_VALUE --> -32768

short是16位有符号原始数据类型。

327位,16位二进制是

0111_1111_1111_1111

添加一个,你只需转到

1000_0000_0000_0000

对应-32768。注意为

System.out.println(Short.MIN_VALUE);
System.out.println((short)(1+Short.MAX_VALUE));

都输出相同的值

-32768
-32768

答案 1 :(得分:0)

short最大值为(2^15)-1 = 32767。当你尝试分配一个更大的数字时,它会溢出,假设它是-2^15 = -32768

的最小值

还有underflow概念,您尝试分配一个较低的值,即为该类型的变量定义的最小值,在这种情况下,它将采用最高值,您可以尝试分配{{ 1}}并查看它将打印的内容。

您可以查看short = -32769文档以获取更多信息。

答案 2 :(得分:0)

所有类型byteshortcharintlong都有一组可能的值。这些类型会换行,因此当您将最大值添加到最大值时,您将获得最小值。

最大short值为32767,因此当您尝试代表32768时,您会得到最小的short值。