2.2 运算方法和运算电路

算术逻辑单元ALU

作用

算术运算:加、减、乘、除等
逻辑运算:与、或、非、异或等
辅助功能:移位、求补等

一般ALU多少位,寄存器就多少位 

加法器实现

一位全加器

串行加法器

串行加法器:
只有一个全加器,数据逐位串行送入加法器中进行运算。
进位触发器用来寄存进位信号,以便参与下一次运算。
如果操作数长n位,加法分n次进行,每次产生一位和,并且串行逐位地送回寄存器。

串行进位的并行加法器

串行进位的并行加法器:把n个全加器串接起来,就可进行两个n位数的相加
串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。

并行进位加法器

补码加减运算器

 有符号和无符号的加减运算都可以用这套逻辑电路

标志位生成

除了相加结果以外还有就是四个标志位

移位运算

算术移位

1、原码的算数移位

符号位保持不变,仅对数值位进行移位。
右移:高位补0,低位舍弃。
若舍弃的位0,则相当于/2
若舍弃的位1,则会丢失精度

左移:低位补0,高位舍弃。
若舍弃的位0,则相当于*2
若舍弃的位1,则会出现严重误差

2、反码的算数移位

正数的反码和原码相同
因此正数反码的移位运算也和原码相同
右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。

负数的反码和原码相反:
右移:高位补1,低位舍弃。
左移:低位补1,高位舍弃。

3、补码的算术运算

正数的补码与原码相同,
因此对正数补码的移位运算也和原码相同。
右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。

补码的算数移位规则如下:
右移(同反码):高位补1,低位舍弃。
左移(同原码):低位补0,高位舍弃。

逻辑移位

可以看做无符号数的移位操作
右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。

循环移位

原码乘法

原码一位乘法:符号位通过异或确定,数值位由被乘数和乘数的绝对值进行n轮加法、移位
每次加法可能 +0 、+[|x|]原
每次移位是“逻辑右移”
乘数的符号位不参与运算
MQ中最低位=1时,(ACC)+[|x|]
原MQ中最低位=0时,(ACC)+0

补码乘法 

补码一位乘法(Booth算法)符号位、数值位都是由被乘数和乘数进行n轮加法、移位,
最后再多来一次加法
每次加法可能 +0、+[x]补、+[-x]补
每次移位是“补码的算数右移”
乘数的符号位参与运算
辅助位-MQ中“最低位”=1时,(ACC)+[x]补
辅助位-MQ生“最低位”=0时,(ACC)+0
辅助位-MQ中“最低位”=-1时,(ACC)+[-x] 补

原码除法

恢复余数法

先默认上商1,如果搞错了再改上商0。并“恢复余数”
ACC、MQ逻辑左移:ACC高位丢弃、MQ低位补0
结果:MQ商 ACC余数
左移n次,上商n+1次,最后一次上商余数不左移

 加减交替法

若余数为负需商0,并+[y]补得到正确余数 

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值