从int.max_value + 1 = 2147483648了解int

Posted by OOFTF Blog on April 16, 2021

为什么Int.MAX_VALUE最大值为2147483647

Java Int储存为4个字节,每个字节为8位 得知 Int一共有32位,最高位表示符号正负,有31位表示数值,因此最大Int的二进制位 01111111111111111111111111111111 转化为十进制: 2的31次方-1 = 2147483647

Int.MAX_VALUE + 1 的底层运算

Int.MAX_VALUE + 1 的实质就是
01111111111111111111111111111111 + 1 = 100000000000000000000000000000

为什么 100000000000000000000000000000 用十进制表示为 -2147483648

100000000000000000000000000000 最高位 1 代表为负数
当为负数的时候,数值位要取反+1获取到真实数值因此
00000000000000000000000000000->111111111111111111111111111 = 2147483647 2147483647 + 1 = 2147483648
因此最终结果为 -2147483648