开篇:润墨网以专业的文秘视角,为您筛选了一篇二进制补码一位乘法规律的推导范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:计算机采用补码运算,速度快效率高,但其递推公式推导复杂。补码乘法也是《计算机组成原理》课程的难点。文章从补码与真值的关系出发,首先推导出补码的右移公式,最终给出了二进制补码一位乘法规则的较全面的推导过程。
关键词:机器数;真值;补码;补码阵列乘法器
中图分类号: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.