如果两个n位数相乘,那么结果将是最大位长

时间:2013-09-13 15:24:58

标签: math binary

我想知道如果有两个n位二进制数相乘,是否有任何公式或方法可以找出更多的最大位。 我搜索了很多,但无法在任何地方找到答案。

5 个答案:

答案 0 :(得分:9)

可以使用示例简单地得出结论:

  

11 * 11(因为11是最大2位数)= 1001(4位)

     

111 * 111 = 110001(6位)

     

1111 * 1111 = 11100001(8位)

     

11111 * 11111 = 1111000001(10位)

从上面我们可以看到你的答案是2 * n

答案 1 :(得分:8)

表示数字N所需的基数B的位数是floor(log_B(N)+1)。 Logarithm有一个很好的属性log(X * Y)= log(X)+ log(Y),它暗示X * Y的位数大致是表示X和Y的位数之和。

答案 2 :(得分:7)

考虑这一点的最简单方法是考虑产品的最大值,这是在我们使用两个被乘数的最大值时获得的。

如果值x是n位数,则最多为2 ^ n - 1.想想看,2 ^ n需要一个后跟n个零。

因此,两个n位数的最大可能乘积是:

(2 ^ n - 1)^ 2 = 2 ^(2n) - 2 ^(n + 1)+ 1

现在n = 1是一种特殊情况,因为1 * 1 = 1再次是一位数。但是通常我们看到,当n> 1时,最大乘积是2n位数。例如如果n = 3,则最大被乘数为x=7,方形49为6位数。

答案 3 :(得分:3)

值得注意的是,位置系统的基础并不重要。无论你为十进制乘法得出什么公式都适用于二进制乘法。

让我们应用一点推论并将两个具有相对素数的数字相乘:分别为2位和3位。

  1. 最小的数字:

    10 * 100 = 1000有4位

  2. 最大可能的数字:

    99 * 999 = 98901有5位

  3. 因此,对于n位乘以m位数,我们推断出上限和下限分别为n+mn+m-1位。让我们确保它也适用于二进制文件:

    1. 10 * 100 = 1000有4位

    2. 11 * 111 = 10101有5位

    3. 所以,它确实适用于二进制,我们可以期望它适用于任何基础。

答案 4 :(得分:1)

x具有n个二进制数字意味着2 ^(n-1)< = x< 2 ^ n,也假设y有m个二进制数字。这意味着:

2^(m+n-2)<=x*y<2^(m+n)

因此x * y可以有m + n-1或m + n个数字。很容易构建两种情况都可能的例子:

  • m + n-1:2 * 2具有3个二进制数字(m = n = 2)
  • m + n:7 * 7 = 49 =(二进制)110001有6位二进制数,m = n = 3