Java 整型数据溢出探索
本博文只研究 int 转 byte 其他以此类推
public class JavaDemo {
public static void main(String[] args) {
/**
* byte 的范围 -128 到 127
*/
// 利用包装类查看大小范围
System.out.println(Byte.MIN_VALUE); // -128
System.out.println(Byte.MAX_VALUE); // 127
int a1 = -300;
byte b1 = (byte) a111;
/**
* 具体 b1 结果是多少呢?
* -300 /(-128) = 2
* b1 = -300 - (-128)*2 = -44
*/
System.out.println(-300 - (-128)*2); // -44
System.out.println(b1); // -44
int a2 = 400;
byte b2 = (byte) a2;
/**
* 具体 b2 结果是多少呢?
* 400 大于最大范围 127, 则
* 400 / (-128) = -3 大于最大范围时需要再此基础上 -1
* 400 - (-128)*(-3-1)
*/
System.out.println(b2); // -112
System.out.println(400 - (-128)*(-3-1)); // -112
}
}