为什么0xffffffff是-1?(计算机对整型的存储) - 知乎
计算机中都是以 二进制补码的形式存入的,正数的补码是他本身,负数的补码是反码 加一,补码的补码是原码
原码 : 10000000000000000000000000000000 (第一位1,后面31个0)(-0)
反码: 11111111111111111111111111111111111 (32个 1)
补码(反码+1) 00000000000000000000000000000(32个 0)(+0)
上面可以看出: +0 和-0的补码是一样的,所以他们在内存中存储也是一样的。但是+0和-0又没必要区分
所以为了多表示一个数,我们规定 :
10000000000000000000000000000000 (第一位1,后面31个0)(-0)表示int类型最大负数:-2147483648
1.3: 为什么最大正数加一会变成最大负数