2数据的表示和运算-2分解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* X补(0.Y1Y2……Yn)+(-X)补Y0 不用管X补的符号, 因为乘以一个正式,保留X补的符号, 剩下的就在计算加法 * 补码乘法, 移位时 带符号移位。(第三个加号) * 先减后判,如减后发现不够减,则在下一步改作加除数 * 比较法—布斯(Booth)法:用相邻两位乘数比较的结果决定加[X]补、 [-X]补或0。 布斯公式:在乘数Yn后添加Yn+1=0。按照Yn+1 ,Yn相邻两位的三种情况,其运算规则如下: Yn+1 Yn =00或11,部分积加0,右移1位; Yn+1 Yn =10 ,部分积加[X]补,右移1位; Yn+1 Yn =01 ,部分积加[-X]补,右移1位 最后一步不移位。 [X*Y]原 = ( XS + YS) (︱X︱*︱ Y ︱) 例如: X = 0.1101 Y = 0.1011 0. 1 1 0 1 * 0. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 + 1 1 0 1 0 . 1 0 0 0 1 1 1 1 手工运算过程 最终乘积原码表示: 0 1 0 0 0 1 1 1 1 解决方案: 1. 每次求出部分积,不是一次总累加 2. 变每次左移被乘数为右移部分积,移出的部分保存起来 3. 乘数放到一个移位寄存器中,用最低的一位来控制相加数(取被乘数或0)。 符号异或, 绝对值相乘 该方案用于计算机会有问题: 1. 加法器只有两个数据输入端 2. 加法器与乘运算数据位数相同 3. 如何判断乘数每一位是 0 或者 1 原码乘运算-手算方案 原码一位乘法 乘法开始时,A寄存器被清为零,作为初始部分积。被乘数放在B寄存器中,乘数放在C寄存器中。实现部分积与被乘数相加是在ALU中完成的。 每步运算,部分积最低一位的值将右移入C寄存器的最高数值位,使相乘之积的低位部分保存进C寄存器中,原来的乘数在逐位右移过程中丢失掉。寄存器A最终存放为乘积的高n位,寄存器C最终存放乘积的低n位。 另外还需要一个计数器Cd用来控制逐位相乘的次数,它的初值存放为乘数的位数值,在计算的过程中每完成一位乘计算就执行减1操作,待计数到0时,给出结束乘运算的控制信号。 实现原码一位乘法的逻辑线路图 加 法 器 部 分 积 被 乘 数 乘 数 F 最 低 位 加运算 移位线路 每位1套 最 高 位 被乘数作为加数,用乘数最低位的值控制累加,结果右移一位存部分积寄存器,并且乘数同时右移一位。 部分积的最低位移入到乘数的最高位 计数器 Cd A B C 原码一位乘运算过程举例 X = 0.1101 Y = 0.1011 【例】设X=0.8125,Y=0.6875,用原码1位乘的方法,求X×Y。 其中寄存器B=X ,计数器Cd=4。计算过程: 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 +x 右移一位→ +x 右移一位→ +0 右移一位→ +x 右移一位→ 部分积 A 乘数 C 乘积高位 乘积低位 1(丢失) 1(丢失) 0(丢失) 1(丢失) X?Y=0[X]原=0.1101, [Y]原=0.1011, 原码一位乘运算规则推导 以小数为例 设[x]原 = x0.x1x2 xn … [y]原 = y0.y1y2 yn … = (x0 y0). x*y* [x ? y]原 = (x0 y0).(0.x1x2

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档