Java中Integer.MAX_VALUE的乘法

我只是在玩Java。编写了这个小程序:

public class MaxValue{

public static void main(String[] args){

int i = Integer.MAX_VALUE;

for(int j = 1; j<=10;j++){

System.out.println(i*j);

}

}

}

输出如下:

2147483647

-2

2147483645

-4

2147483643

-6

2147483641

-8

2147483639

-10

现在我很惊讶。我不知道如何解释这个输出。我知道我可以使用long代替大于整数的最大限制来处理值。但是我只想知道java如何计算这个?

回答:

我们需要分析结果的二进制内容:

Integer.MAX_VALUE * 1 = 0x7fffffff(十进制2147483647)

Integer.MAX_VALUE * 2 = 0xfffffffe,即-2

Integer.MAX_VALUE * 3 = 0x17ffffffd,但它是33位,在被截断后,它是0x7ffffffd,即2147483645

等等…

以上是 Java中Integer.MAX_VALUE的乘法 的全部内容, 来源链接: utcz.com/qa/408600.html

回到顶部