欢迎来到天天文库
浏览记录
ID:48031434
大小:341.01 KB
页数:44页
时间:2020-01-13
《原码补码乘除法.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、原码一位乘运算以定点小数为例0.1101×0.10110.000011010.00011010.000000+0.011010.10001111返回例如:X=0.1101Y=-0.1011笔算乘法过程机器实现问题:1.加法器只有两个数据输入端;2.加法器与运算数据位数相同。解决方案:1.改n输入数相加过程为两两相加;2.改2n位相加过程为n位相加。X×Y=-0.10001111原码一位乘运算返回基本公式:设被乘数[X]原=xf.x1x2…xn乘数[Y]原=yf.y1y2…yn则[X×Y]原=(xf⊕yf).(X*×Y*)其中,X*和Y*分别是X和Y的绝对值例
2、如:X=0.1101Y=-0.1011[X]原=0.1101[Y]原=1.1011X*=0.1101Y*=0.10110.11010.0000累加器初值取零值×0.1011+0.110111010.1101 初值0加被乘数11010.01101部分积右移,0000 将移出的一位保存起来+1101求第一次部分积0.10001111手工运算过程原码一位乘运算原码一位乘运算X*=0.1101Y*=0.10110.11010.01101×0.1011+0.110111010.0011前次部分积加被乘数11010.100111部分积右移0000
3、 将移出的一位保存起来+1101求第二次部分积0.10001111手工运算过程返回原码一位乘运算X*=0.1101Y*=0.10110.11010.100111×0.1011+0.000011010.1001前次部分积加011010.0100111部分积右移0000将移出的一位保存起来+1101求第三次部分积0.10001111手工运算过程返回原码一位乘运算X*=0.1101Y*=0.10110.11010.0100111*0.1011+0.110111010.0001前次部分积加被乘数11010.10001111部分积右移0000
4、 将移出的一位保存起来+1101求第四次部分积0.10001111手工运算过程再用一步完成两数符号异或求积的符号,结果为-0.10001111返回原码一位乘运算规则原码一位乘运算规则:1.乘积的符号位由两数符号位“异或”产生,符号位不参与运算;2.部分积可采用一位或两位符号位;3.乘积的数值部分由两数绝对值相乘产生,通过n次“加法”和“右移”操作实现。(n为乘数整数部分位数)返回原码一位乘运算实例部分积乘数0.00000.1011+0.11010.11010.011010101+0.11011.00110.1001110100.010011101
5、+0.11011.00010.100011110返回0.1101×0.1011110111010000+11010.10001111例如:X=0.1101Y=-0.1011手工运算过程计算机内运算的实现方法则X*=0.1101Y*=0.1011[X]原=0.1101[Y]原=1.1011[X×Y]原=1.10001111补码乘法运算原码乘法不难实现,但有两个问题:1.符号位与数值位分别处理,不方便;2.若数据为补码形式,可能需要多于两次补原码变换。也可以直接用补码完成乘法运算,即从补码开始,直接得到补码的积。下面看一看补码乘运算的实现算法。返回=(Yi+
6、1-Yi)×2-i设被乘数[X]补=x0.x1x2…xn乘数[Y]补=y0.y1y2…yn先复习两个概念:①已知[X]补=x0.x1x2…xn时[X/2]补=x0.x0x1x2…xn-1②已知[Y]补=y0.y1y2…yn时Y=-y0+yi×2-ii=1nni=0补码一位乘法的实现算法推导(比较法)返回X×Y=X×[-y0+yi×2-i]补码一位乘法运算算法推导(比较法)[X×Y]补= [X]补×[Y]补?返回=X×(0.y1y2…yn)-X×y0[X×Y]补=[X×(0.y1y2…yn)-X×y0]补=[X×(0.y1y2…yn)]补-[X×y0]补=
7、[X]补×(0.y1y2…yn)-y0[X]补=[X]补×Yni=0证明[X×(0.y1y2…yn)]补=[X]补×(0.y1y2…yn)(1)当X≥0时,[X×(0.y1y2…yn)]补=X×(0.y1y2…yn)=[X]补×(0.y1y2…yn)(2)当X<0时,[X×(0.y1y2…yn)]补=2+X×(0.y1y2…yn)(mod2)=2n+1+X×(0.y1y2…yn)(mod2)=2n+1×(0.y1y2…yn)+X×(0.y1y2…yn)(mod2)=(2n+1+X)×(0.y1y2…yn)(mod2)=(2+X)×(0.y1y2…yn)(mo
8、d2)=[X]补×(0.y1y2…yn)(mod2)
此文档下载收益归作者所有