简单说一下概念:
- 原码:除了第一位符号位,其他位是该数的绝对值。
例如:3的原码表示是0011,其中第一个0表示是正数。-3的原码表示是1011,其中第一个1表示是负数。
- 反码:正数的反码是其本身,而负数的反码是其原码除了符号位的其他为取反。
例如:-3的原码表示是1011,而其反码表示是1100,-0表示为1111,而0表示为0000,我们可以发现3+(-3)在反码表示下为0011+1100=1111是反码中的-0。
- 补码:正数的补码是其本身,而负数的补码是其反码+1。
负数的补码也可以理解为其原码从低位算起,第一个1与其右边的所有0保留,其他位除了符号位全部取反。例如:-3的原码表示为1011,其补码表示为1101。我们可以发现在溢出机制下补码表示3+(-3)=1011+1101=0000=0。