定点数编码表示
原码表示法
直接将数的二进制进行存储,有符号数需要在首位添加符号位
通常不采用原码表示的原因
- 原码的0表示不唯一,+0为0000;-0为1000(假设长度为4位)
- 原码进行加减法运算方式不统一
- 需要额外对符号位进行处理,不利于硬件设计
- 当a<b时,a-b实现比较困难
现代计算机整数一般都用补码表示,
移码表示法
移码是将一个数值加上一个偏置常数,通常当编码位数为n的时候,取偏移常数为\(2^{n-1}\)或者\(2^{n-1}-1\)
当n=4时,移码表示数\(E'=E+2^3\)
-8(+8)~0000B
-7(+8)~0001B
0(+8)~1000B
0的移码表示唯一
当偏置常数为\(2^{n-1}\)时,移码和补码只有第一位不同
移码用来表示浮点数的阶
为什么要用移码表示浮点数的阶
- 便于浮点数加减运算时的对阶操作
补码-模运算
在一个模运算系统中,一个数与它除以“模”后的余数等价。
在模12系统中:10-4=10+8(mod 12)
称8是-4对12的补码
结论一:一个负数的补码等于模减该负数的绝对值
结论二:对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替。
一个负数补码等于将对应正数补码(正数补码即为本身)各位取反再加一
如-0000 1000补码为1111 1000