内存溢出之后结果问题
int a = Integer.MAX_VALUE;
int b = Integer.MIN_VALUE;
long c = a-b;
System.out.println(a);//2147483647
System.out.println(b);//-2147483648
System.out.println(c);//-1
//由于a-b得到的数据仍然为int型,但是int已经不能表示这个数字(长度过大)
//所以出现内存溢出,
问题:内存移出后,为什么结果会是-1,而不是其他的什么数值?
------解决方案--------------------可以转化成二进制自己算一下
MAX: 0111 1111 1111 1111 1111 1111 1111 1111
MIN: 1000 0000 0000 0000 0000 0000 0000 0000
二者之差:
1111 1111 1111 1111 1111 1111 1111 1111
首位是1说明是负数,剩余的二进制位按位取反:
0000 0000 0000 0000 0000 0000 0000 0000
然后加1,就是:
0000 0000 0000 0000 0000 0000 0000 0001
就是1,因为是负数,所以就是 -1