- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
补码一位乘法的证明分析
二.? 补码一位乘法 为了得到补码一位乘法的规律,我们先从补码和真值的转换公式开始讨论. 1.补码与真值的转换公式 设[x]补 x0.x1x2…xn, 当x 0时, x0 0, n [x]补 0.x1x2…xn ?xi2-i x i 1 当x 0时, x0 1, [x]补 1.x1x2…xn 2+x 所以 n x 1.x1x2…xn-2 -1+0.x1x2…xn -1+ ? xi2-i i 1 故得出 n x -x0+ ? xi2-i i 1 等式右边x为真值.这是一个重要公式,说明真值和补码之间的关系. 2.补码的右移 正数右移一位,相当于乘 1/2.负数用补码表示时,右移一位也相当于乘 1/2.因此,在补码运算的机器中,一个数不论其正负,连同符号位向右移一位,符号位保持不变,就等于乘 1/2.现证明如下: 设 [x]补 x0.x1x2…xn,因为 n x -x0+ ? xi2-i i 1 所以 n 1/2x -1/2x0+1/2 ? x2-i i 1 n n -x0+1/2x0+1/2 ? xi2-i -x0+1/2 ? xi 2- i+1 i 1 i 0 写成补码形式,即得 [1/2x]补 x0.x0x1x2… xn 如果要得 [2-ix]补,只要将[x]补连同符号右移i位即可. 3.补码乘法规则 设被乘数[x]补 x0.x1x2…xn和乘数[y]补 y0.y1y2…yn均为任意符号,则有补码乘法算式 n [x?y]补 [x]补? -y0+ ? yi2-i 2.31 i 1 证明如下: (1)被乘数x符号任意,乘数y符号为正. 根据补码定义,可得 [x]补 2+x 2n+1+x mod 2 [y]补 y 所以 [x]补?[y]补 2n+1 ? y + x?y 2 y1y2…yn + x?y 其中( y1y2… yn)是大于0的正整数,根据模运算性质有 2(y1y2… yn) 2 (mod 2) 所以 [x]补?[y]补 2+x?y [x?y] 补 mod 2 即 [x? y]补 [x]补? [y]补 [x]补? y 2.31a (2)被乘数x符号任意,乘数y符号为负 [x] 补 x0.x1x2…xn [y] 补 1.y1y2…yn 2+y mod 2 由此 y [y]补 - 2 0.y1y2…yn-1 所以 x?y x 0.y1y2…yn - x [x?y] 补 [x 0.y1y2…yn ] 补+[-x] 补 又 0.y1y2…yn 0,根据式(2.31a)有 [x 0.y1y2…yn ] 补 [x] 补 0.y1y2…yn 所以 [x?y] 补 [x] 补 0.y1y2…yn + [-x] 补 2.31b (3)被乘数x和乘数y符号都任意. 将式(2 31a)和武(2.31b)两种情况综合起来,即得补码乘法的统一算式, 即 [x?y] 补 [x] 补 0.y1y2…yn - [x] 补?y0 [x] 补 -y0+0.y1y2…yn n [x] 补? -yo + Σ yi2-i i 1 证毕. 为了推出串行逻辑实现的分步算法,将上式展开加以变换: [x?y] 补 [x] 补?[ -y0+ y12-1+y22-2+…+yn2-n] [x] 补?[ -y0+ y1-y12-1 + y22-1-y22-2 +…+ yn2- n-1 - yn2-n ] [x] 补?[ y1-y0 + y2-y1 2-1+…+ yn-yn-1 2- n-1 + 0-yn 2-n] n [x] 补? ? yi+1 - yi 2-i i 1 写成递推公式如下 [z0] 补 0 [z1] 补 2-1 [z0] 补+ yn+1-yn [x] 补 yn+1 0 [z2] 补 2-1 [z1] 补+ yn - yn-1 [x] 补 ┇ [zi] 补 2-1 [zi-1] 补+ yn-i+2 - yn-i+1 [x] 补 ┇ [zn] 补 2-1 [zn-1] 补+ y2 - y1 [x] 补 [zn+1] 补 [zn] 补+ y1-y0 [x] 补 [x?y] 补 开始时,部分积为0,即[z0]补 0.然后每一步都是在前次部分积的基础上,由(yi+1-yi (i 0,1,2,…,n)决定对[x]补的操作,再右移一位,得到新的部分积.如此重复n+1步,最后一步不移位,便得到[x?y]补,这就是有名的布斯公式. 实现这种补码乘法规则时,在乘数最末位yn后面要增加一位补充位yn+1。开始时yn+1 0, 由 ynyn+1 判断第一步该怎么操作;然后再由yn-1yn判断第二步该怎么操作。但因为每作一步要右移一位,故作完第一步后,yn-1yn正好移到原来ynyn+1的位置
文档评论(0)