第三章————运算方法和运算部件
高级语言和机器指令中的运算
基本运算:
1.按位运算:符号|表示按位OR运算;符号&表示按位AND运算;符号~表示按位NOT运算;符号^表示按位XOR运算。
2.逻辑运算:符号||表示OR运算;符号&&表示AND运算;符号!表示NOT运算。
3.移位运算(逻辑移位和算术移位)
逻辑移位:不考虑符号位,总是把高(低)位移出,低(高)位补0。对于无符号整数的逻辑左移,如果最高位移出的是1,则发生溢出。
算术移位:(对于带符号的整数采用)表达式k<<k表示对数x左移k位;表达式x>>k表示对数x右移k位。
每左移一位,相当于数值扩大一倍,所以左移可能会发生溢出,左移k位,相当于数值乘以2的k次方;每右移一位,相当于数值缩小一半,右移k位,相当于数值除以2的k次方。
4.位扩展和位截断运算
···扩展后的数值保持不变。
···有两种扩展方式:0扩展和符号扩展
···0扩展用于无符号数,只要再短的无符号数前面添加足够的0即可
···符号扩展用于补码表示的带符号整数。通过在短的带符号整数前添加足够多的符号位来扩展
基本运算部件
1.串行进位加法器
···全加器用来实现两个本位数加上低位进位生成一位本位和以及一位向高位的进位。
···行波进位加法器
···串行进位加法器速度慢的主要原因是进位串行方式传递,高位进位依赖低位进位。
2.并行进位加法器
···先行进位(超前进位)部件,简称CLA部件
3.带标志加法器
···要能够进行无符号整数的加/减运算和带符号整数的加/减运算,还需要在无符号数加法器的基础上增加相应的逻辑门电路,使得加法器不仅能计算和/差,还要能够生成相应的标志信息
4.算术逻辑部件
···ALU是一种能进行多种算术运算与逻辑运算的组合逻辑电路,其核心部件是带标志加法器,多采用先行进位方式
定点数运算
1.补码加减运算
2.原码加减运算
浮点数多采用IEEE 754标准,其尾数用原码表示,故在浮点数加减运算中涉及原码加
减运算。原码加减运算规则如下:
(1) 比较两个操作数的符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。
(2)求和时,数值位相加,若最高位产生进位则结果溢出。和的符号位取被加数(或被减数)的符号。
(3)求差时,被加数(或被减数)数值位加上加数(或减数)数值位的补码,并按以下规则产生结果。
①最高数值位产生进位,表明加法结果为正,所得数值位正确。
②最高数值位没有产生进位,表明加法结果为负,得到的是数值位的补码形式,因此,需要对结果求补,还原为绝对值形式的数值位。
③在上述①的情况下,差的符号位取被加数(被减数)的符号;在上述②的情况下,符号位为被加数(被减数)的符号取反。
3.移码加减运算
4.原码乘法运算
①原码一位乘法
②原码两位乘法
5.补码乘法运算
①补码一位乘法
②补码两位乘法
6.快速乘法器
7.原码除法运算
①恢复余数除法
②不恢复余数除法
8.补码除法运算
①补码恢复余数除法
②补码不恢复余数除法
浮点数运算
1.浮点数加减运算
①对阶
②尾数加减
③尾数规格化
④尾数的舍入处理
⑤溢出判断
2.浮点数乘除运算
①浮点数乘法运算
②浮点数除法运算