use*_*246 0 binary assembly bits multiplication integer-arithmetic
如果我将两个16位数相乘,结果将是32位长.但为什么会这样呢?这有什么明确的解释?
并且为了正确理解:对此的计算是:n位数乘以m位数给出(n + m)位数?
(2 n - 1)*(2 m - 1)= 2 n + m - 2 n - 2 m + 1
- (2 n + 2 m)就像清除索引n和m处的位一样,与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位)中轻松看到