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