(1)原码两位乘
两位乘数的取值可以有四种可能组合,每种组合对应于以下操作:
00 相当于0*X,部分积Pi右移2位,不进行其它运算;
01 相当于1*X,部分积Pi+ X后右称2位;
10 相当于2*X,部分积 Pi+ 2X后右移2位;
11 相当于3*X,部分积 Pi + 3X后右移2位。
上面出现了 + 1X, + 2X, + 3X 三种情况,
+X 容易实现,
+2X可把X左移1位得2X,在机器内通常采用向左斜1位传送来实现。
可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。
解决问题的办法是备:
以 +(4X-X) 来代替 +3X运算,
在本次运算中只执行 -X, 而 +4X 则归并到下一步执行,
因为下一步运算时,前一次的部分积已右移了两位,
上一步欠下的 +4X 在本步已变成 +X。
实际线路中要用一个触发器C来记录是否欠下+4X的操作尚未执行,
若是,则1→C。
因此实际操作要用Yi-1 Yi C三位的组合值来控制乘法运算操作,
运算规则如表2.12所示。
表2.12 原码两位乘
(2) 原码两位乘举例:
假定 X = 0.100111 Y = 0.100111
则 [-X]补码 = 1011001
下面部分积和乘数显示的都是小数点后的数字,乘数是Y,
顺序从上向下,
注意:如题解法中最后一次运算时欠下 +4X ,.则部分积右移2位后还需补充完成 +X 操作。
评论区说的为啥要用[-x]补码,是因为计算机计算过程是用补码来计算的。我们计算过程中有- x 的需要
补充视频资料url:https://www.bilibili.com/video/av95860744?p=27
(东北大学)计算机组成原理