先上代码:
int a = Integer.MAX_VALUE;
int b = Integer.MIN_VALUE;
System.out.println(a + a); // -2
System.out.println(b + b); // 0
System.out.println(a - b); // -1
为什么是这样的结果?参考这篇博客《原码, 反码, 补码 详解》(http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html)
这样就好理解了,假设Max值为:01111111 假设Min值为:11111111,有以下结论:
max: min:
0 1111111 1 1111111 | 原码
0 1111111 1 0000000 | 补码
min + min:
0 0000000 | 补码
0 0000000 | 原码 = 0
max + max:
1 1111110 | 补码
1 0000010 | 原码 = -2
max + min:
1 1111111 | 补码
1 0000001 | 原码 = -1
本文通过具体的Java代码示例解释了整数的最大值和最小值相加时发生溢出的现象,并给出了直观的原码、补码表示,帮助读者理解整数运算中的溢出现象。
9608

被折叠的 条评论
为什么被折叠?



