首页 > 范文大全 > 正文

二进制补码一位乘法规律的推导

开篇:润墨网以专业的文秘视角,为您筛选了一篇二进制补码一位乘法规律的推导范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:计算机采用补码运算,速度快效率高,但其递推公式推导复杂。补码乘法也是《计算机组成原理》课程的难点。文章从补码与真值的关系出发,首先推导出补码的右移公式,最终给出了二进制补码一位法规则的较全面的推导过程。

关键词:机器数;真值;补码;补码阵列乘法器

中图分类号:TP332文献标识码:A文章编号:1009-3044(2009)25-7278-03

A Detailed Derivation of the Rules about Two's Complement Multiplication

SUN Qi-liang

(University of Ji'nan, Ji'nan 250022, China)

Abstract: The computer using two's complement is faster and more efficient,but the derivation of the rules about two's complement multiplication is Complex.Two's complement multiplication is also a difficulty of the course "Principles of Computer Organization".This article starts from the relations of two's complement and the true value.First,it deduces a formula about the shifting to right of two's complement.Finally,it gives the detailed rules about two's complement multiplication.

Key words: machine number; true value; two's complement; two's complement array multiplier

在计算机中表示的带符号的二进制数称为“机器数”。这个数本身称为“真值”。机器数有四种表示形式:原码、反码、补码和移码。其中补码在加减法的运算中具有许多优势,所以在计算机系统中,数值一般用补码来表示(存储)。补码乘法的递推公式较复杂,《计算机组成原理》课程的一般教材介绍的并不详细。此补码一位乘法公式的推导过程如下:

1 真值和补码之间的关系

设[x]补=x0.x1x2…xn

当x≥0时,

当x≤0时,

真值和补码的关系:

2 补码的右移

在补码机器中,一个数不论其正负,连同符号位向右移一位,符号位保持不变,就等于乘1/2。

设[x]补=x0.x1x2…xn

写成补码的形式,即得:

要得到[2-I x]补,连同符号位右移i位即可。

3 补码一位乘法规则

设被乘数[x]补=x0.x1.x2…xn

乘数[y]补=y0.y1.y2…yn

均为任意符号,则有补码乘法算式:

[x・y]补=[x]补・y

或:

证明:

1) 当被乘数x符号任意,乘数y符号为正时:

根据补码定义:

[x]补= x0.x1x2…xn=2+x=2n+1+x (mod2)

[y]补=0.y1y2…yn=y

[x]补・[y]补=2n+1・y+x・y=2(y1y2…yn)+x・y

由于(y1y2…yn)是大于或等于1的正整数,根据模运算性质(大于2的部分全部丢掉)有:

2(y1y2…yn)=2

[x]补・[y]补=2+x・y=[ x・y]补 (mod2)

即: [ x・y]补=[x]补・[y]

2) 当被乘数x符号任意,乘数y符号为负时:

[x]补= x0.x1x2…xn

[y]补=1.y1y2…yn=2+y(mod2)

y=[y]补-2=1.y1y2…yn-2=0.y1y2…yn-1

x・y=x(0.y1y2…yn-1)=x(0.y1y2…yn)-x

[ x・y]补=[x(0.y1y2…yn)]补-[x]补

又因(0.y1y2…yn)>0

[x(0.y1y2…yn)]补=[x]补(0.y1y2…yn)

所以:

证毕。

为推导出逻辑实现的分步算法,将上式展开得到各项部分积累加的形式。

注:yn+1是增加的附加位,初值为0

将上式改为接近于分步运算逻辑实现的递推关系。

注:最后一步不移位。

由此可见,每次都是在前次部分积的基础上,由(yi+1-yi)决定对[x]补的操作,然后再右移一位,得到新的部分积,即

1)如果yn=yn+1,则部分积[zi]加0,再右移一位;

2)如果ynyn+1=01,则部分积[zi]加[x]补,再右移一位;

3)如果yn=yn+1,则部分积[zu]加[-x]补,再右移一位;

如此重复n+1步,但最后一步不移位。包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。算法流程图如图1。

4 结束语

推导过程的关键是首先推导出公式[x・y]补=[x]补・y,然后是对公式的展开过程和增加的附加位yn+1。而得出这一公式的前提是1和2两个推论,即真值与补码之间的关系和补码的右移。需要注意循环n+1次,每次右移一位,但是最后一次不移位,这是在验证补码运算规则时经常出现的一个错误。

参考文献:

[1] 王爱英.计算机组成与结构[M].北京:清华大学出版社,2001:74-78.

[2] 唐朔飞.计算机组成原理[M].北京:高等教育出版社,2008:243-258

[3] 郑纬民,汤志忠.计算机系统结构[M].北京:清华大学出版社,1998:39-42

[4] 白中英.计算机组成原理[M].3版.北京:科学出版社,2001:42.

[5] 白中英.计算机组成原理题解、题库与实验[M].3版.北京:科学出版社,2001:20.

[6] 李澄举.一般化全加器在阵列乘法器设计中的典型应用[J].嘉应学院学报,2006,24(3):64.

[7] 彭海云.直接补码阵列乘法的手工计算方法[J].电子工程师,2008,34(2):63-64.

[8] 胡同瑞.补码一位乘法递推公式的正确推导[J].高师理科学刊,2007(3):75.