Java 两个整数是否都可能有一个大于Integer.MAX_值的数字?
当上述条件变为真时???x的值是多少?Java 两个整数是否都可能有一个大于Integer.MAX_值的数字?,java,Java,当上述条件变为真时???x的值是多少? Integer.MAX_VALUE=0x7fffffff,我尝试使用十六进制0x8000000的x。但是x现在是负数。Java整数是32位的,任何高于32位数字最大值的值都将被滚动并变为负数。这称为整数溢出 如果您有: int x = ?; if(x > Integer.MAX_VALUE) { System.out.println(x); } x将等于-2147483648,或整数。最小值没有这样的x 从: int:默认情况下,int数据
Integer.MAX_VALUE=0x7fffffff,我尝试使用十六进制0x8000000的x。但是x现在是负数。Java整数是32位的,任何高于32位数字最大值的值都将被滚动并变为负数。这称为整数溢出 如果您有:
int x = ?;
if(x > Integer.MAX_VALUE)
{
System.out.println(x);
}
x
将等于-2147483648
,或整数。最小值
没有这样的x
从:
int:默认情况下,int数据类型是一个32位有符号二补整数,最小值为-2^31,最大值为
值为2^31-1
最大32位值等于0111111111111111111111111111111111111111111
这是一种表示,因此将第一位设置为1将导致一个负数(0x8000000=1000..0000)。因此,您要查找的
x
实际上没有可能的值。没有这样的intx
。这是根据MAX_值的定义
我要问的是,在这种情况下,x值可能是多少。Integer.MAX_值是31-1的2次幂。我重复我说的:x
(如果x
是int
)的值都不会导致条件x>Integer.MAX_值
为真。x的可能值满足条件(真)你不明白我在告诉你什么吗?答案是,“这是不可能的。”
int x = Integer.MAX_VALUE;
x += 1;