原码一位乘法器logisim_一位加减乘运算

一位十进制加法运算

1. 8421码加法运算

8421码的加法规则:

⑴两个十进制数的8421码相加时,按“逢二进一”的原则进行;
⑵当和≤9,无需校正;
⑶当和>9,则+6校正;
⑷在做+6校正的同时,将产生向上一位的进位。

70a4f6349035272bb42b29b7e812d3c0.png

1.一位8421码加法器

校正函数=C4’+S4’S3’+S4’S2’

向上一位的进位C4=校正函数

310f0b5f56322477e7cd41ad60af34c3.png
一位8421码加法器

定点乘法运算

一般来讲,做乘除法运算,用原码比用补码简单,但有的机器,数据是用补码表示的,为避免码制间的频繁转换,乘除也用补码来做。

一、原码乘法

1.原码一位乘(原码运算符号位要单独处理)

用原码运算,数据的符号不能同数值位一同参加运算,而需单独处理,两原码表示的数相乘,其结果的符号是两数符号的异或。

手算乘法是通过移位和加法来实现的。计算机不能照搬的原因:

① n位乘法,需n个数相加得部分积,而全加器只有三个输入端,故实现不了。
② n位乘法,乘积2n位,要用2n位的寄存器来存放积.
③ 若用加法器做加法,n位乘法,需2n位的加法器,造成硬件浪费.

我们想要:

① n位乘法,只用n位加法器,且只用两数相加的加法器
② n位乘法,只用n位寄存器来存放结果

方法:(n次加法, n次移位

•参加运算的操作数取其绝对值;
令乘数的最低位为判断位,若为1,则加被乘数,若为0,则加0;
累加后的部分积以及乘数右移一位;
重复上述操作,直到乘数位全部乘完为止。

1b8642c08751f4a350d165e958734579.png

8ead9cb8126bc871dc43a2f3fc989dc9.png
原码乘法器

二、补码乘法

1.补码一位乘

被乘数x, [x]补=xs.x1…xn
乘数y, [y]补=ys.y1…yn

校正法

⑴ x任意,y>0时,
[X×Y]补 = [X]补× [Y]补
⑵ x任意,y<0时,
[X×Y]补 = [X]补× (0.y1…yn )+[-X]补

比较法--Booth乘法

补码校正法虽可行,但是在乘数为负时校正控制比较复杂,实用性差。希望能有一个正负数操作一致的算法,这就是比较法(又叫Booth法).
设被乘数 [X]补 = Xs.X1X2…Xn 和乘数 [Y]补 = Ys.Y1Y2…Yn 均为任意符号,

7f454bda6d8a23ca3eb4c2592688d10c.png

=(Y1-Ys) ×[X]补+2 -1((Y2-Y1) ×[X]补 + 2-1((Y3-Y2) ×[X]补 +

2-1 ( … + 2-1 ((Yn+1-Yn) ×[X]补 +0) )))

将此式展开,得到递推关系:

[Z0]补=0
[Z1]补=2-1{[Z0]补+(yn+1-yn)[x]补}
[Z2]补=2-1{[Z1]补+(yn-yn-1)[x]补}
.
.
[Zn]补=2-1{[Zn-1]补+(y2-y1)[x]补}

从而得到:

[x×y]补=[Zn]补+(y1-ys).[x]补

--------补码一位乘比较法

⑴ 相乘时,参加运算的数用补码表示,符号位参与运算;被乘数取双符号位,乘数取单符号位并参加运算。 ⑵ 乘法开始前,部分积置全0,乘数末位增加附加位yn+1=0。 ⑶ 比较yi 和yi+1,决定如何运算 yi yi+1 0 0 ;+全0,结果右移一位; 0 1 ;+[x]补,结果右移一位; 1 0 ;+[-x]补,结果右移一位; 1 1 ;+全0,结果右移一位。 ⑷ 重复 n+1 次,最后一次不移位 ⑸ 得乘积 2n+2位,其中含两位符号位

db150fd0e86e6bef01f89651b10ca65c.png

4611c1ad853b4ea325556f319515df37.png
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值