软考——数据表⽰(原码,反码,补码,移码)
前提:
各种数值在计算机中表⽰的形式称为机器数,特点是⼆进制。机器数有两种,⼀种是⽆符号数,⼀种是带符号数。对于带符号数,机器数最⾼位是表⽰正、负的符号位,其余位表⽰数值
两个负数的补码相加为了便于运算,带符号数可以⽤原码,反码,补码,移码来表⽰,接下来⼀个个阐述
原码表⽰法
原码表⽰法是将不同进制(主要是⼗进制)转化位⼆进制
对于⼗进制原码表⽰有两种情况,⼀种是纯整数,⼀种是纯⼩数
纯整数
除2取余逆序
纯⼩数
乘2正向取整
为了更好的说明为什么引⼊反码,补码和移码,需要借鉴下软考中的图⽚
反码表⽰法
如何从原码转化到反码?
从图中可以看出,正数的反码是本⾝,负数反码=原码(除符号位)每位取反
为什么要引⼊反码?
解决负数加法问题,将减法运算转换为加法运算(即将1-1转化为1+(-1))
补码表⽰法
如何从反码转化为补码
从图中可以看出,正数的补码是其本⾝,负数补码=反码+1
为什么要引⼊补码?
解决反码正负数相加不是0,在图中反码1-1中结果是11111111,不是0,所以补码弥补了反码的不⾜
移码表⽰法
如何从补码转化为移码?
移码=补码符号位取反
为什么要引⼊移码?
按照⼈类的思维来说,正数是⼤于负数的,但是从原码反码,补码(带上符号位)来看,负数是⼤于正数的,因此为了让正数是⼤于负数,引⼊了移码
总结: