Java判断是否溢出
int类型一般占4个字节,故取值范围 -2^31 ~ 2^31-1,对于无符号另当别论,我们的讨论建立在以补码形式存储的带符号整数。
很方便的是,Java提供了两个方便的常量来表示-2^31 ~ 2^31-1
- 分别是Integer.MIN_VALUE和Integer.MAX_VALUE
上溢、下溢:
整数超过了2^31-1,此时不会报异常
比如Integer.MAX_VALUE+1= -2^31
而Integer.MIN_VALUE-1= 2^31-1
加减中判断溢出:比如num1+ num2
if(num1>Integer.MAX_VALUE-num2){
System.out.println("上溢");
}
if(num2<Integer.MIN_VALUE-num2){
System.out.println("下溢");
}
乘除判断异常
if(num1>Integer.MAX_VALUE/10){
System.out.println("乘法上溢");
}
if(num1<Integer.MIN_VALUE/10){
System.out.println("乘法下溢");
}