Binary 如何做两个补码的整数乘法和除法?

Binary 如何做两个补码的整数乘法和除法?,binary,division,multiplication,bits,twos-complement,Binary,Division,Multiplication,Bits,Twos Complement,我读过这篇关于使用两个补码的二进制乘法的文章。但我不太清楚。就连我也很难理解这篇文章。我想知道如何计算负数的乘法: eg: -1 with -7 should give 7. A 4-bit, 2's complement of -1 is : 1111 A 4-bit, 2's complement of -7 is : 1001 一些分步计算乘法的方法会有帮助。我看到的文章中没有一篇是关于分工的。如何实现这一点?步骤1:符号扩展两个整数到两倍的位。这样做是安全的,尽管可能并不总是必要的 f

我读过这篇关于使用两个补码的二进制乘法的文章。但我不太清楚。就连我也很难理解这篇文章。我想知道如何计算负数的乘法:

eg: -1 with -7 should give 7.
A 4-bit, 2's complement of -1 is : 1111
A 4-bit, 2's complement of -7 is : 1001

一些分步计算乘法的方法会有帮助。我看到的文章中没有一篇是关于分工的。如何实现这一点?

步骤1:
符号扩展
两个整数到两倍的位。这样做是安全的,尽管可能并不总是必要的

for 4-bit --> 1111, you would extend as 1111 1111
for 4-bit --> 0111,you would extend as 0000 0111
第二步:做初等乘法

sep 3:从结果的最低有效部分获取正确数量的结果位

例如:在乘法运算之后,最后得到的结果是
0010011110
取最后8位,即
10011110

让我用您提供的示例进行说明:
-1x-7
采用4位表示

         1111 1111        -1
       x 1111 1001     x  -7
      ----------------    ------
          11111111         7
         00000000
        00000000
       11111111
      11111111
     11111111
    11111111
   11111111
   ----------------
1  00000000111       --->  7 (notice the Most significant bit is zer``o)
      --------  (last 8-bits needed) 
你可以得到更多的细节


对于除法:转换为正数,并在计算后调整符号。我将把这个留作练习,但你可以参考它。

好的,让我们看看我是否能让这个对你来说足够简单

二者的补充: 如果(当且仅当)你有一个负数,首先把它转换成正数形式。为了简单起见,所有数字都是6位的。位的限制将限制数字的大小。除此之外,大小不重要

一些数字转换成正二进制形式 -7: 000111 16: 010000 -22: 010110 1:000001

现在只对-7和-23进行二次补码。因此,我们翻转位(1->0&&0->1),然后添加一个

 000111
 Goes to the complement + 1
 111000
 +    1
=111001
22岁

 010110
 Goes to the complement + 1
 101001
+     1
=101010
然后你只需要把它们加在一起,就像其他数字一样


看起来有人已经介绍了乘法部分,所以我不想重复了。

如果我只允许使用4位表示,而不能扩展到8位,该怎么办-bit@eagertoLearn:加倍位用于计算目的,在最终结果中不需要。但是,请注意,4位可容纳的最大值为2^4-1,即15倍,不需要扩展到双倍宽度。只做数学模型16。@RaymondChen:你说的数学模型16是什么意思?您能详细说明一下吗?@user1988876虽然4位无符号值最多允许15位,但我们使用的是有符号值,这意味着4位只能使我们达到7位。没问题。这够清楚吗?在我们两人之间,我们是否遗漏了你问题的任何部分?