1. 把符号“数字化”的数成为机器数,而把带“+”或“-”符号的数称为真值;
2. 原码表示法,约定整数的符号位与数值位之间用逗号分隔,小数的符号位与数值位之间用小数点隔开;
3. 原码、补码、反码三种机器数的特点可归纳如下:
# 三种机器数的最高位均为符号位。符号位和数值部分之间可用“.”(对于小数)或“,”(对于整数)隔开;
# 当真值为正时,原码、补码、反码的表示形式相同;
# 当真值为负时,三者的表示形式不同,但其符号位都用1表示,而数值部分有这样的关系“补码是原码的求反加一,反码是原码的每位求反”
4. 已知[y]补求[-y]补的办法是连同符号位在内,每位取反,末位+1;用于补码加减运算
5. 同一个真值的移码和补码仅差一个符号位;
6. 通常浮点数被表示成N= S x r^j,式中S为尾数(可正可负),j为阶码(可正可负),r是基数(或基值),在计算机中基数可取2,4,8,16等;
7. 基数为2时,尾数最高位为1的数为规格化数;如果不是规格化数,就要通过修改阶码并同时左右移尾数的办法使其变成规格化数;基数为4时,尾数最高两位不全为0的数为规格化数;同理基数为8时,尾数最高三位不全为零的数为规格化数;
8. 定点数和浮点数的比较
# 当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的大得多
# 当浮点数为规格化数时,其相对精度远比定点数高
# 浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算步骤多,运算速度比定点运算的低,运算线路比定点运算的复杂;
# 在溢出的判断方法上,浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。
9. 算术移位规则
# 正数,移位后出现的空位均补0
# 负数,原码补0,反码补1,补码左移补0右移补1
10. 溢出判断
# 用一位符号位判断溢出
对于加法,只有在正数加正数或负数加负数两种情况下才可能出现溢出,符号不同的两个数相加是不会溢出的,减法同理,减法只需将减数“求补”之后看符号即可;
只要实际参加操作的两个数符号相同,结果与源操作数的符号不同,即为溢出
# 用两位符号位判断溢出
采用2位符号位的变形补码,以4为模,当2位符号位不同时,表示溢出,否则无溢出;
无论是否发生溢出,高位(第1位)永远代表真正的符号
11. 乘法运算可以用移位和加法来实现,两个4位数相乘,总共需要进行4次加法运算和4次移位;乘法运算的实现有原码1位乘、原码2位乘、补码1位乘和补码2位乘,具体例子见课本256页;
12. 除法运算有如下几种方法,1是恢复余数法(当余数为负时,需加上除数,将其恢复成原来的余数);2是加减交替法,详见课本260页 ;还有补码除法
13. 浮点数加减运算必须按以下几步进行
# 对阶,是两数的小数点位置对齐
# 尾数求和, 将对阶后的两尾数按定点加减运算规则求和(差)
# 规格化, 为增加有效数字的位数,提高运算精度,必须将求和(差)后的尾数规格化
# 舍入,为提高精度,要考虑尾数右移时丢失的数值位
# 溢出判断, 判断结果是否溢出
14. 为了提高运算速度,除了采用高速芯片和改进算法(如将二位乘替代一位乘)外,普遍采用先行进位的办法,如果把传递进位的电路称作进位链,那么实现先行进位的进位链通常采用单重分组进位链和双重分组进位链两种
# 单重分组进位链是将n位全加器分成若干小组,小组内的进位同时产生,
小组与小组之间采用串行进行,故这种进位又有“组内并行,组间串行”之称
# 双重分组跳跃进位链是将n位全加器分成几个大组,大组内包含若干小组,
每个大组内包含的各小组的最高位进位是同时产生的,大组与大组之间采用串行进位,
因为各小组的最高位进位是同时产生的,小组内的其他进位也是同时产生的,
故这种进位链有“组内并行,组间并行”之称;