2&2的补码二进制乘法

时间:2014-11-18 14:28:08

标签: binary division multiplication bits twos-complement

我对如何执行有符号2的补码乘法感到有些困惑。

         10 1101        -19
       x 11 0001     x  -15
      ----------------  ------
          101101         285
         000000
        000000
       000000
      101101
     101101
    ----------------
   100010011101

添加所有的计算我得到的“100010011101”不是285签名,为什么?

3 个答案:

答案 0 :(得分:1)

你正在做无符号算术。要做两个补码,你需要将数字视为具有无限重复的符号数字:

            ...1111101101
            ...1111111001
-------------------------
            ...1111101101
           ...0000000000
          ...0000000000
         ...0000000000
        ...1111101101
       ...1111101101
      ...1111101101
     ...1111101101
    ...1111101101
   ...1111101101
           :
-------------------------
      ...0000000100011101

你需要继续这个过程,直到达到一个固定点(计算的其他位数都是相同的。)事实证明,这总是在你产生 n + m 输出位(其中 n m 是被乘数的大小),因此很容易限制。

答案 1 :(得分:0)

如果您想要正确的结果,您必须将数字的 sign extent 设为两倍的位数。

                       111111101101        
               x       111111110001
                       ------------
                       111111101101
                      000000000000
                     000000000000
                    000000000000
                   111111101101
                  111111101101
                 111111101101
                111111101101
               111111101101
              111111101101
             111111101101
      +     111111101101
            ----------------------
           000000000000000100011101

答案 2 :(得分:0)

将位扩展为全宽并截断

这是一个4位的例子:

  1110   -2
* 1111   -1
------   --
  1110
  110
  10
+ 0
------
  0010    2

现在使用8位重复您的示例,如果乘以字节,如果乘以短路则为16位