什么是原码、补码和反码?
题干
原码
补码
反码
题解
计算机里保存的是最原始的数字,也就是没有正和负的数字,我们称之为无符号数字。
在计算机中,原码、补码和反码都是用来表示有符号整数的编码方式。
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。正数的符号位为
0
,负数的符号位为1
。例如,8
位二进制数,+1的原码为0000 0001
,-1
的原码为1000 0001
。反码是在原码的基础上,对正数不变,对负数除符号位外各位取反。例如,
8
位二进制数,+1
的反码为0000 0001
,-1
的反码为1111 1110
。补码是在原码的基础上,对正数不变,对负数除符号位外各位取反后再加
1
。也就是在反码的基础上加1
。例如,8
位二进制数,+1
的补码为0000 0001
,-1
的补码为1111 1111
。
计算机使用补码来表示数字,是因为补码可以将减法转化为加法,并且避免了 0
有两种表示方式(+1 & -1
)的问题。使用补码还可以多表示一个最小值。例如,8
位二进制数,使用原码或反码表示的范围是 [-127, +127]
,而使用补码表示的范围是 [-128, +127]
。