2016-09-15 62 views

回答

4

中,MCS-51具有8x8-> 16乘法。你們兩個24位數字AB,這等同於:

A = a0 + (a1 * 256) + (a2 * 65536) 
B = b0 + (b1 * 256) + (b2 * 65536) 

其中,A0爲最低字節,A1是中間字節,a2爲最高字節,並且BS是相應的東西B.

因此:

A * B = (a0 + (a1 * 256) + (a2 * 65536)) * (b0 + (b1 * 256) + (b2 * 65536)) 
     = a0 * (b0 + (b1 * 256) + (b2 * 65536)) + 
     a1 * 256 * (b0 + (b1 * 256) + (b2 * 65536)) + 
     a2 * 65536 * (b0 + (b1 * 256) + (b2 * 65536)) 
     = a0 * b0   + a0 * b1 * 256  + a0 * b2 * 65536 + 
     a1 * b0 * 256 + a1 * b1 * 65536 + a1 * b2 * 16777216 + 
     a2 * b0 * 65536 + a2 * b1 * 16777216 + a2 * b2 * 4294967296 
     = a0 * b0 + 
     256 * (a0 * b1 + a1 * b0) + 
     65536 * (a0 * b2 + a1 * b1 + a2 * b0) + 
     16777216 * (a1 * b2 + a2 * b0) + 
     4294967296 * (a2 * b2) 

因此,它是所有九個8x8的乘法,然後加入成羣結伴,再移位每個組的要求,然後在最後添加的一切。

如果你只想要一個24位的結果而不是48位的結果,你可以從16777216 *中刪除所有的東西,因爲顯然那個部分對低三字節不起作用。或者同樣停止在其他地方爲其他輸出尺寸進行工作。