两个16位数的乘法 - 为什么结果是32位长?

use*_*246 0 binary assembly bits multiplication integer-arithmetic

如果我将两个16位数相乘,结果将是32位长.但为什么会这样呢?这有什么明确的解释?

并且为了正确理解:对此的计算是:n位数乘以m位数给出(n + m)位数?

phu*_*clv 5

(2 n - 1)*(2 m - 1)= 2 n + m - 2 n - 2 m + 1

- (2 n + 2 m)就像清除索引nm处的位一样,与2 n + m相比,它不会对结果产生太大影响,因此需要n + m位来表示结果.

例如1111 2*1111 2 = 11100001 2(15*15 = 225)

一般来说,(b n - 1)*(b m - 1)= b n + m - b n - b m + 1,所以在任意基数b中将n位乘以m位数会得到最多n + m位数

您可以在10:9*9 = 81(1位*1位= 2位)或99*99 = 9801(2位*2位= 4位)中轻松看到