整型计算
1. 为什么Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
System.out.println(Integer.MAX_VALUE + 1);
System.out.println(Integer.MIN_VALUE);
打印:
-2147483648
-2147483648
也就是-2^31正整数的原码,反码,补码一样,符号位固定为0。
负整数的原码,反码,补码符号位为1:
反码 = 原码各位取反(除第一位符号位)
补码 = 反码 + 1
以-1为例:
原码:10000000,00000000,00000000,00000001
反码:11111111,11111111,11111111,11111110
补码:11111111,11111111,11111111,11111111
计算机内部是使用补码存储并且计算的,那么-1-1的过程就是
-1的补码 11111111,11111111,11111111,11111111 - 1
得到-2的补码:11111111,11111111,11111111,11111110
那么-2的反码:11111111,11111111,11111111,11111101
那么-2的原码:10000000,00000000,00000000,000000102. 为什么Integer.MAX_VALUE * 10 = -10
补充:
Last updated