不多BB,先看人工算法:列竖式计算十进制数2345 x 9876的结果
注意第一次运算5 x 6时,多了一个步骤是查九九乘法表中5 x 6 = 30,记入中间结果。
依次运算出各乘数的中间结果,最后得到的总过程为:
根据竖式计算的原理,现在来计算二进制数1000 x 1001(也可以看成十进制的):
得到一个规律:
- 如果当前参与运算的乘数位为1,则直接将被乘数放置在对应位置上;
- 如果当前参与运算的乘数位为0,则直接将“0”放置在对应位置上。
这个规律只对0和1的乘法运算起作用,由此也可以看出为什么计算机会选择二进制。
有过编程基础就知道,计算机运算时是“一步一步”运算的,也就是说,一次操作只输出一个结果。体现在乘法运算上,就是每次被乘数与乘数相乘,就会产生一个中间结果(如1000 x 1001的第一步会产生一个中间数 1000),各个中间结果相加得到最终结果。
为了节省计算机部件和提高运行效率,我们选择只用3个部件,一个保存被乘数,一个保存乘数,还有一个保存最终结果。那么,乘法运算产生的中间结果,就必须直接与当前乘积累加。来看操作步骤(红色字均为每一次乘积结果):