占4个字节int型 0 的二进制补码 是 00000000000000000000000000000000 占4个字节int型整数能表示最小的负数为-2^31 == -2147483648, 此数的二进制补码却是 10000000000000000000000000000000 前面已知该数是用-0的补码表示,为什么两个补码不一样?这就是人为规定?
答:可以这么理解,计算机中规定没有正负零之分,在此用一个字节表示int型的二进制,即负零的补码也就是正零的补码:00000000 反推:既然零没有正负之分,负零就是正零,原码反码补码一样,但由于负零却又实际存在,人为规定用负零表示最小的负数,即此最小的负数的原码表示为:00000000,转成补码即为:10000000
|