补数
在学习补码之前,我们要了解一下补数。补数,顾名思义,就是互补的数。
例如:
时针转一圈为12小时,当时钟指示为六点,想要它指向三点,可以按顺时针方向将分针转九格,也可以逆时针方向转三格,结果是一致的。
事实上,任何时候时针向顺时针转九格和逆时针转三格的效果都是一致的。
如果我们将方向定位正负,在12这个计量范围之内,+9和-3就是互补的。数学上称这个12为模写作(mod12),而称+9是-3以12为模的补数。
补码
应用于计算机中的补数称为补码
补码的引入
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
补码的定义
- 整数
x为真值,n为整数的位数。
例如:
①x=+1010,则 [x]补=0,1010
②x=-1011000,则 [x]补=27+1+x=27+1+(-1011000)=1,0101000
注意:用逗号将符号位和数值部分分开 - 小数
x为真值
举例:
①x=+0.1110,则 [x]补=0.1110
②x=-0.1100000,则 [x]补=2+(-0.1100000)=1.0100000
注意:用小数点将符号位和数值位分开
利用原码求补码
在实际应用中,我们经常利用原码求得反码再得到补码,而不通过复杂的公式计算。
- 对于正数,用原码、反码、补码表示都是一样的。
- 对于负数,用原码、反码、补码表示时,符号位都固定为1,但是数值位均不相同,利用原码求补码的转换关系如下:
- 原码符号位为1不变,数值位的每一位二进制数求反得到反码(求反即0变为1,1变为0)
- 反码符号位为1不变,反码数值位末位加1,得到补码
举例:
x=-1010
[x]原=1,1010
[x]反=1,0101
[x]补=[x]反+1=1,0110
注意:当真值为负时,补码除符号位每位取反,末位加1可得到原码