1.概念简述
真值 (书写用) :将用“+”、“-” 表示正负的二进制数称为真值,机器不能识别
机器码 (机器内部使用): 将符号和数值一起编码表示的二进制数称为机器码,机器能够识别
常用的定点数机器码有:原码、反码、补码、移码
2.原码
在真值的基础上,增加符号位 ,数值位不变。最高位为符号位,0表示正数,1表示负数。
对于定点整数来说,在数值位的最高位前面加符号位即可
[+111011]原 = 0111011
[-111011]原 = 1111011
符号位的权值:,比如原数-111011,数值为111011,原码在最高位增加符号位1之后,好像这个数增加了一样
表示区间:−0111…1 ~ +0111…1 或 [−(−1), −1] 或 (−, )
对于定点小数来说,将小数点前面的改为0或1
[-0.1111]原 = 1.1111
[+0.1111]原 = 0.1111
符号位的权值:1
表示区间(区间对称):
−0.111…1 ~ +0.111…1 或 [−(1−), 1−] 或 (−1,1)
两个机器零
[+0]原=0.000…0
[-0]原=1.000…0
原码加减法运算复杂,符号位不能直接参与运算。
3.反码
所谓反码,就是二进制的各位数码取反,但要基于真值为负数才取反,符号位与原码相同。换言之,正数的原码与反码相同;负数的反码数值位(不包括符号位)取反。
两个机器零
[+0]反 = 0.000…0
[−0]反 = 1.111…1
[0.1111]反 = 0.1111 [−0.1111]反 = 1.0000
[111011]反 = 01110 [−111011]反 = 1000100
4.补码
4.1模
模,即符号位进位位的权值,比如:
时钟的模是12,20-48,20点等效于-4点等效于8点,
若要计算3-4,则可以变减为加3+(-4+12)3+811-1
通过加法运算得到了原本减法的结果
4.2补码计算
真值为正数,符号位为0,补码等于原数据 ;
真值为负数,增加一个模,也可以用反码法得出:符号位为1,数值位逐位取反,末位加1。
例: [-0.010101]补=1.101011
①零有唯一的表示方式
[+0.0000]补= [-0.0000]补= 0.0000
②-1.0的补码
反码法: [-1.0000]补= 0.1111+0.0001=1.0000
加模:X+2(加了一个模)=-1+2=1
补码相对原码少一个-0,多一个-1,所以补码可以比原码、反码多表示一个数字
4.3表示区间
定点小数
-1.000…0 ~ +0.111…1 或 [-1,1-] 或 [-1,1)
定点整数
-1000…0 ~ +0111…1 或 [-, -1] 或 [-, )
非对称区间,左侧多一个数
4.4变形补码
也称双符号位补码,符号位00表示正数,11表示负数。
符号位01表示正溢出,10表示负溢出,最高位表示正确符号位。
对于定点小数,采用变形补码后其模为4,因此变形补码也称为模4补码
例:
x=-0.0101,则其变形补码为[x]补=11.1011
x=-10101,则其变形补码为[x]补=11101011
4.5补码加减运算规则
[X + Y]补= [X]补+ [Y]补
[X−Y]补= [X]补+ [−Y]补
[−Y]补= [[Y]补]补
[[Y]补]补 = 对 [Y]补逐位取反, 再在最低位加 1
4.6运算实例
4.6补码的特性
- 唯一的机器零
- 符号位可以直接参与运算
- 减法可以变成加法,运算电路统一
- 负数比整数多一个
5.移码
与补码的符号位相异,数据位相同。常用于表示浮点数阶码。
X=+10101 [X]移 =25+10101=110101
X=-10101 [X]移 =25-10101=001011