在计算机中,乘法运算是一种很重要的运算,有的机器由硬件乘法器直接完成乘法运算,有的机器内没有乘法器,但可以按机器作乘法运算的方法,用软件编程实现、因此,学习乘法运算方法不仅有助于乘法器的设计,也有助于乘法编程
下面从分析笔算乘法入手,介绍机器中用到的几种乘法运算方法
(1)分析笔算乘法:设A=0
1101,B=0
1011,求A×B
笔算乘法时乘积的符号由两数符号心算而得:正正得正;其数值部分的运算如下:所以A×B=+0
10001111可见,这里包含着被乘数4的多次左移,以及四个位积的相加运算
若计算机完全模仿笔算乘法步骤,将会有两大困难:其一,将四个位积一次相加,机器难以实现;其二,乘积位数增长了一倍,这将造成器材的浪费和运算时间的增加
为此,对笔算乘法做些改进
(2)笔算乘法的改进:将A
1011=0
001(A+0
1A)]=0
1A)]}=2-1{A+2-1[0
A+2-1(A+2-1A)]}=2-1{A+2-1[0
A+2-1(A+2-1(A+0))]}由上式可见,两数相乘的过程,可视作加法和移位(乘2-1相当于做一位右移)两种运算,这对计算机来说是非常容易实现的
从初始值为0开始,对上式作分步运算,则第一步:被乘数加零A+0=0
1101+0
0000=0
1101第二步:右移一位,得新的部分积2-1(A+0)=0
01101第三步:被乘数加部分积A+2-1(A+0)=0
1101+0
01101=1
00111第四步:右移一位,得新的部分积2-1A+2-1(A+0)=0
100111第五步:0
A+2-1[A+2-1(A+0)]=0
100111第六步:2-1{0
A+2-1[A+2-1(