二进制乘法:一个乘积需要多少位?

8

如果你要计算两个二进制数的乘积,一个有n位,另一个有m位,那么乘积会有多少位呢?例如,如果我将一个6位的二进制数和一个8位的二进制数相乘,它们的乘积将是多少位?

3个回答

8

当你乘两个数字时,其积的二进制位数不能少于max(m,n),并且不能超过(m+n)(除非其中一个数字为0)。

在你的例子中,m=6,n=8。

积的最小位数将是8,最大位数将是14。


0
从函数的角度来看这个问题,你可以使用以2为底的对数。例如,如果我们有两个数字a和b(为了清晰起见,假设a有n位,b有m位),你可以通过对这两个数字取以2为底的对数来得到这些值: log_2(a) = n ; log_2(b) = m
现在,如果你想要得到乘积的位数,你可以利用对数的一个性质: log_2(a*b) = log_2(a) + log_2(b)
这样你就得到了乘积的位数!这将是你大小的一个上限,但它效果非常好。

0
对于m和n,最小值是m+n-1,最大值是m+n。 因此,8和6分别得到13和14。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接