两个整数的数字是否可能大于Integer.MAX_VALUE?

时间:2018-05-31 04:00:59

标签: java

int x = ?;
if(x > Integer.MAX_VALUE)
{
    System.out.println(x);
}

当上述条件成立时??? x的价值是多少? Integer.MAX_VALUE = 0x7fffffff,我尝试使用十六进制的0x80000000 x。但x现在是负数。

2 个答案:

答案 0 :(得分:0)

Java整数是32位,超过32位数最大值的任何内容都将被翻转并变为负数。这称为整数溢出。

如果你有:

int x = Integer.MAX_VALUE;
x += 1;

x将等于-2147483648Integer.MIN_VALUE

答案 1 :(得分:0)

没有x

来自Java docs

  

int :默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-2 ^ 31且最大值< /强>   值2 ^ 31-1

最大32位值等于0111 1111 1111 1111 1111 1111 1111 1111

它是2's complement表示,因此将第1位设置为1将导致负数(0x80000000 = 1000..0000)。因此,您正在寻找的x确实没有任何价值。