运算方法和运算部件
计算机完成的功能通过执行程序来实现,任何程序最终都要转换为机器指令。指令中包含的各种算数逻辑运算能直接在硬件上执行,执行这些运算的硬件称为运算部件。
|| 基本运算部件
基本运算部件是 加法器 ALU 移位器,ALU 的核心部件是加法器。
- 串行进位加法器
将一块小石头扔进平静的水中,泛起的波纹会向外一圈一圈逐步扩散,串行进位加法器中最低进位Co 就像一块小石头,它把进位逐步从低位扩展到最高位,所以称这种串行进位加法器为行波进位加法器(Carry Ripple Adder ,CRA)
最后一位和数 Fn 的延迟时间为 2n+1 级门延迟【2(n-1)+ 3】,加法运算时间随两个加数位数 n 的增加而增加。当 n 较大时,串行进位的加法器速度将显著变慢。
- 并行进位加法器
实现上述逻辑表达式的电路称为先行进位(也称超前进位)部件(Carry Lookahead Unit),简称CLA 部件,通过这种进位方式实现的加法器称为全先行进位加法器。
逻辑结构 :
【注:Fi = Pi 异或 Ci 】
- 带标志加法器
n 位无符号数加法器只能用于两个n位二进制数相加,不能进行无符号数的减运算,也不能进行带符号数的加/减运算。如果要实现这种功能的话,还需要在无符号数加法器的基础上增加相应的逻辑门电路,使得加法器不仅能计算和/差,还要能够生成相应的标志信息。
########
说明:
【溢出标志】 OF = Cn 异或 Cn-1
【进位/借位标志】 CF = Cout 异或 Cin
【符号标志】SF = Fn
【零标志】 ZF = 1当且仅当 F=0
CF = sub 异或 cout
(溢出判断)
signed——(1)OF=1; (2)和的符号位和加数的符号位不同
unsigned—— CF =1
(大小判断作减法,如果大于)
signed—— SF = OF
unsigned—— CF = 0
- 算数逻辑部件
|| 定点数运算
- 补码加减运算
- 原码乘法运算
用原码实现乘法运算时,符号位与数值位分开运算,分为两步:
(1)确定乘积的符号位。由两个乘数的符号异或得到。
(2)计算乘积的数值位。乘积的数值部分为两个乘数的数值部分之积。
计算机中的改进措施:
推导过程:
实现电路:
例题
- 原码除法运算:
##########
介绍恢复余数法:
介绍不恢复余数法:
在恢复余数除法运算中,当中间余数与除数相减结果为负时,要多做一次+ Y操作,因而降低了算法执行速度,又使得线路变得复杂。在计算机中很少使用恢复余数法,而普遍采用不恢复余数法。
上例用此法实现
|| 浮点数运算
- 浮点数加减运算
(1)对阶
两者作差,向大者靠拢。
(2)尾数加减
根据原码加减法则进行
【
】
(3)规格化
左规??右规??
(4)舍入
使用保护位、舍入位、粘位,就近舍入。
当处在正中间位置时,01 舍,11 入,10 强迫结果为偶数。
例题:
- 浮点数乘除运算
尾数相乘除,指数相加减。
|| 作业
已知 x = 10,y = -6,采用 6 位机器数表示。请按如下要求计算,并把结果还原为真值。
(1)【x+y】补 【x-y】补
(2)用原码一位乘法计算【x * y】原
(3)用不恢复余数法计算【x/y】原 的商和余数
采用 IEEE754 单精度浮点数格式计算下列表达式的值。
(1)0.75 +(-65.25) (2) 0.75 - (-65.25)