计算机组成原理之定点乘法运算详解

机器算法的运算规则

两个原码表示的数相乘的运算规则:乘积的符号位由两数的符号位按异或运算得到,乘积数值部分为两个正数相乘之积。
乘积符号运算法则是:同号相乘为正,异号相乘为负。正好可以符号位按“异或”运算得到。
数值部分的运算方法与十进制乘法类似:
在这里插入图片描述

从乘数y最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0”,则写下全0;以此类推,乘数y各位权重不同,所以要进行相应移位。最后得到的和为乘积z。
串行1位乘法器多次执行“加法——移位”操作并不需要很多器件,但由于速度太慢已被淘汰,下面只介绍并行乘法器。

不带符号的阵列乘法器

在这里插入图片描述

如图为m位乘n位不带符号的阵列乘法器逻辑框图,在被加数产生部件中,需要mxn个“与”门并行产生,显然容易理解(仅1*1=1,两位同时为1才输出1),为乘法器的上半部分。
现以5位x5位不带符号的阵列乘法器为例说明并行阵列乘法器的基本原理:

在这里插入图片描述

如图为5x5位不带符号的阵列乘法器逻辑电路图,FA为一位全加器,竖直方向为和输出,斜线方向为进位输出。
图中为求和部件,需要n(n-1)个全加器和n2个“与”门(“与”门来自被加数产生部件)。
如图中加粗线所示为最坏情况下的延迟途径。

eg:已知两个不带符号的二进制整数A=11011,B=10101,求乘积P.
11011x10101=11011+000000+1101100+00000000+110110000=1000110111

带符号的阵列乘法器

对2求补

在介绍带符号的阵列乘法器之前,我们需要先了解对2求补的方法:
令A=anan-1…a0,则从a0开始从右端向左扫描,直到找出第一个“1”,例如ai=1,则第0-i位不变,对ai左边所有输入位取反。
eg:在一个4位对2求补器中,输入为1010,则输出应为0110.
对2求补器电路图为:
在这里插入图片描述
对2求补电路利用符号位作为控制信号,若符号位为"0"则输出与输入相等,若符号位为"1"则对2求补(实际上就是输出 输入数 不带符号位的补码部分)

接下来开始学习带符号的阵列乘法器,如下图为(n+1)位x(n+1)位带求补器的阵列乘法器逻辑方框图:
在这里插入图片描述

如图所示,总共使用了三个求补器:
n位算前求补器作用为:将两个已经不带符号的数a和b变成正整数。(求a和b的绝对值的二进制表示)
2n位算后求补器的作用为:当两个输入操作数的符号不一致时,把运算结果变成带符号的数(输出结果的完整补码形式
通常,把包含这些求补级的乘法器又称为符号求补的阵列乘法器。

当然,带求补器的阵列乘法器既适用于间接补码乘法,也适用于原码乘法,不过在原码乘法中三个求补器都不需要,因为除去符号位的数据即是绝对值。

eg:1.设x=+15,y=-13,用带求补器的原码阵列乘法器求出乘积x*y.
[x]=01111,[y]=11101.
符号位单独运算0 ⨁ \bigoplus 1=1;
尾数部分 |x|=1111,|y|=1101.
1111x1101=1111+00000+111100+1111000=11000011.
加上符号位,x * y=[111000011]=-(128+64+2+1)10=(-195)10

2.设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积x * y.
[x]=10001,[y]=10011.
符号位单独运算1 ⨁ \bigoplus 1=0.
尾数部分 |x|=1111,|y|=1101.(由两个算前求补器求得)
1111x1101=1111+00000+111100+1111000=11000011.
乘积符号位为0,算后求补器输出为[x * y]=[011000011]=(195)10

3.x=11011,y=-11111,用带求补器的补码阵列乘法器求出乘积x * y.
[x]=011011,[y]=100001.
符号位单独运算0 ⨁ \bigoplus 1=1.
尾数部分 |x|=11011,|y|=11111.(由两个算前求补器求得)
11011x11111=11111+111110+0000000+11111000+111110000=1101000101.
乘积符号位为1,算后求补器输出为[x * y]=[10010111011]=[-1101000101]2

  • 15
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新西兰做的饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值