原码一位乘法.doc

上传人:re****.1 文档编号:552764484 上传时间:2022-08-29 格式:DOC 页数:4 大小:74.54KB
返回 下载 相关 举报
原码一位乘法.doc_第1页
第1页 / 共4页
原码一位乘法.doc_第2页
第2页 / 共4页
原码一位乘法.doc_第3页
第3页 / 共4页
原码一位乘法.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《原码一位乘法.doc》由会员分享,可在线阅读,更多相关《原码一位乘法.doc(4页珍藏版)》请在金锄头文库上搜索。

1、原码一位乘法原码一位乘法学习辅导 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数x原 = xf 。x0 x1 x2 xn 乘数 y原 = yf 。y0 y1 y2 yn则乘积 z 原 = ( xfyf ) . (0。 x0 x1 x2 xn)(0 . y1 y2 yn)式中,xf为被乘数符号,yf为乘数符号。 乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数和符号组合只有四种情况(xf yf = 00,01,10,11),因此积的符号

2、可按“异或”(按位加)运算得到。数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其乘法规则更为简单一些:从乘法y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0,则写下全0。然后再对乘数y的高一位进行的乘法运算,其规则同上,不过这一位乘数的权与最低位乘数的权不一样,因此被乘数x要左移一位。依次类推,直到乘数各位乘完为止,最后将它们统统加起来,便得到最后乘积z 。 设 x = 0。1011,y = 0.1101,让我们先用习惯方法求其乘积,其过程如下: 0. 1 1 0 1 (x) 0. 1 0 1 1 (y) + 1 1 0 1 1 1 0 1 0

3、 0 0 0 1 1 0 1 0。 1 0 0 0 1 1 1 1 (z) 如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。但是,但是人们习惯的算法对机器并不完全适用。原因之一,机器通常只有n位长,两个n位数相乘,乘积可能为2n位。原因之二,只有两个操作数相加的加法器,难以胜任将n个位积一次相加起来的运算。为了简化结构,机器通常只有n位长,并且只有两个操作数相加的加法器.为此,必须修改上述乘法的实现方法,将 x y 改写成适于如下定点机的形式:一般而言,设被乘数 x 、乘数 y 都是小于 1 的 n 位定点正数: x = 0 。 x1 x2 xn ; y = 0 。 y1 y2 yn其

4、乘积为x y = x ( 0.y1y2 yn ) = x ( y1 2 1 + y2 2 2 + + yn 2 n) = 2 -1( y1x + 2-1( y2 x + 2-1 ( + 2-1 ( yn-1 x + )))令 zi 表示第 i 次部分积,则上式可写成如下递推公式: z0 = 0 z1 = 2-1( ynx + z0) zi=2-1(yn-i+1x+zi1) zn = xy = 21( y1x + zn1)显然,欲求xy,则需设置一个保存部分积的累加器。乘法开始时,令部分积的初值z0 = 0,然后求加上ynx,右移1位得第1个部分积,又将加上yn - 1x,再右移1位得第2个部分

5、积。依此类推,直到求得y1x加上zn-1并右移1位得最后部分积,即得xy。显然,两个n位数相乘,需重复进行n次“加”及“右移”操作,才能得到最后乘积。这就是实现原码一位乘法的规则。 【例 】 x = 0.1101, y = 0.1011,用原码一位乘法计算 x y = ? 解:求解过程如下: 部分积 乘数 说明 00。0000 yf 1 0 1 1 z0 = 0 + 00。1101 y4 = 1,+ x 00.1101 00.0110 1 yf 1 0 1 右移,得z1 + 00.1101 Y3 = 1,+ x 01。0011 00.1001 1 1 yf 1 0 右移,得z2 + 00.0000 Y2 = 0,+0 00.1001 00。0100 1 1 1 yf 1 右移,得z3 + 00.1101 Y1 = 1,+ x 01。0001 00。1000 1 1 1 1 yf 右移,得z3 = x y 所以 x y = 0。10001111

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号