原码、反码和补码
一、什么是原码、反码和补码
- 原码:原码是有符号数的原始表示法,即最高位为符号位,“0” 表示正,“1” 表示负,其余为数值部分。8 位二进制原码的表示范围为 1111 1111B ~ 0111 1111B(-127 ~ +127)。其中,原码 0000 0000B 与 1000 0000B 的数值部分相同,但符号位相反,它们分别表示 +0 和 -0。
- 反码:正数的反码与其原码相同;负数的反码为:符号位不变,原码的数值部分各位取反。例如, 0000 0100B 的反码为 000 0100B,而 1000 0100B 的反码为 1111 1011B。+0 和 -0 的反码分别为 0000 0000B 和 1111 1111B。
- 补码:正数的补码与其原码相同;负数的补码为:符号位不变,原码的数值部分各位取反,末位加 1(即反码加 1)。例如,原码 0000 0100B 的补码仍为 0000 0100B,而原码 1000 0100B 的补码为 1111 1100B。
二、补码运算
- 8 − 4 = 4 8 - 4 = 4 8−4=4
[ 8 ] + [ − 4 ] [8]+[-4] [8]+[−4]
= [ 00001000 ] 原 + [ 10000100 ] 原 =[00001000]_{原}+[10000100]_{原} =[00001000]原+[10000100]原
= [ 00001000