不多BB,先看人工算法:列豎式計算十進制數(shù)2345 x 9876的結(jié)果

圖1.png
注意第一次運算5 x 6時,多了一個步驟是查九九乘法表中5 x 6 = 30,記入中間結(jié)果。

圖2.png
依次運算出各乘數(shù)的中間結(jié)果,最后得到的總過程為:

圖3.png
根據(jù)豎式計算的原理,現(xiàn)在來計算二進制數(shù)1000 x 1001(也可以看成十進制的):

圖4.png
得到一個規(guī)律:
- 如果當前參與運算的乘數(shù)位為1,則直接將被乘數(shù)放置在對應(yīng)位置上;
- 如果當前參與運算的乘數(shù)位為0,則直接將“0”放置在對應(yīng)位置上。
這個規(guī)律只對0和1的乘法運算起作用,由此也可以看出為什么計算機會選擇二進制。

圖5.png
有過編程基礎(chǔ)就知道,計算機運算時是“一步一步”運算的,也就是說,一次操作只輸出一個結(jié)果。體現(xiàn)在乘法運算上,就是每次被乘數(shù)與乘數(shù)相乘,就會產(chǎn)生一個中間結(jié)果(如1000 x 1001的第一步會產(chǎn)生一個中間數(shù) 1000),各個中間結(jié)果相加得到最終結(jié)果。
為了節(jié)省計算機部件和提高運行效率,我們選擇只用3個部件,一個保存被乘數(shù),一個保存乘數(shù),還有一個保存最終結(jié)果。那么,乘法運算產(chǎn)生的中間結(jié)果,就必須直接與當前乘積累加。來看操作步驟(紅色字均為每一次乘積結(jié)果):


圖6.jpg