上一节,我们学习了进位计数制及其相互转换,这次我们来看下计算机中带符号数的表示
在一般算术表示中使用“+”和“-”来表示正数与负数,而在计算机中使用“0”和“1”来表示正数和负数
用“+”或“-”表示正负的数叫真值
用“0”或“1”表示正负的数叫机器数
原码表示
二进制数的最高位表示符号,0表示正,1表示负,数值部分用二进制数绝对值表示
注:8位二进制数原码的最大数为01111111(+127),最小数为11111111(-127)0的原码有两种表示形式:00000000和10000000(+0和-0)
补码表示
- 补码的定义:带符号数X的补码表示[X]补定义为[X]补=M+X(Mod M),其中模数M根据机器数的位数而定,如位数为8则M=28
- 用补码表示的机器数,符号位仍然表示数的符号:0为正,1为符。对于正数,补码与原码相同,对于负数需要进行变换。
- 由真值,原码变换为补码:由于正数的原码与补码相同,下面讨论负数的变换方法
1.负数的真值变换为补码的方法:将各位变反(0变1,1变0)然后在最低位加1
2.负数的原码变换为补码:保持符号位不变,其余各位变反,最低位加1
例:将-59变换为补码
真值 -00111011
原码 10111011
变反 11000100
加1 11000101
注:当位数为8时,最大补码为01111111=[+127]补,最小补码为10000000=[-128]补(这考虑进位),0的补码只有一个,[0]补=00000000,[-128]补=10000000,[-1]补=11111111
- 补码的加减运算
规则:[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补
注:其中[-Y]补是对[Y]补执行一次求补运算(求补运算是将原数连同符号位一起(不管是正还是负)按位求反,再在最低位加1)
例:X=24 Y=8,求[24-8]补
16 原码 00010000
16 补码 00010000
24 原码 00011000
24 补码 00011000
8的原码 00001000
8的补码 00001000
00011000-00001000=00010000
[-8]补是对[8]补进行求补运算,即11111000
00011000+11111000=100010000
上面的作为入门吧,下面的这篇文章更详细,大家可以参考下【详解】原码-反码-补码