以8位2进制为例。
原码就是最高位为符号位,0代表正数,1代表负数。比如0 0000001代表1;1 0000001代表-1。而0的原码有两个0000 0000 和 1000 0000。
反码:正数的反码是本身,负数的反码是除了符号位其余求反。比如1的反码还是0000 00001,而-1的反码变成了1111 1110。而0000 0000 和 1111 1111都代表0。1和-1的反码相加就是1111 1111等于零,但是零有两个反码,不唯一,所以就出现了补码。
补码:正数的补码还是本身,负数的补码在反码的基础上+1。比如1的补码仍然是0000 0001,而-1的补码变成了1111 1110 + 0000 0001 = 1111 1111。特殊规定,-128的补码是1000 0000
总结:正数的原码、反码、补码都是本身;0的原码和反码都有两个;-128的补码是1000 0000.