Binary 两个';s补二进制乘法

Binary 两个';s补二进制乘法,binary,twos-complement,Binary,Twos Complement,在下面的问题中,使用二元乘法和二元补码,我不知道哪里出错了 我正在尝试乘法12*-6 我们知道,12=01100和-6=11010,我们得到了0000001100*11111110。我尝试将这两个数字相乘,如下所示: 1111111010 x 0000001100 ------------ 0000000000 0000000000 1111111010 + 1111111010 --------------- 10111110111000 这绝

在下面的问题中,使用二元乘法和二元补码,我不知道哪里出错了

我正在尝试乘法
12*-6

我们知道,
12=01100
-6=11010
,我们得到了
0000001100*11111110
。我尝试将这两个数字相乘,如下所示:

     1111111010
   x 0000001100
   ------------
     0000000000
    0000000000
   1111111010
+ 1111111010
---------------
 10111110111000

这绝对不是
-72
,那么我做错了什么?

从左侧删除不适合数据类型的数字:

10111110111000
截断为

1110111000

你会发现这确实是
-72

你必须继续扩展符号。也就是说,你应该以1111111 0111000结束,所以即使在乘法器和乘法器被符号扩展之后,乘积上也会发生符号扩展?@user2485710这是2的补码,而不是符号大小。从技术上讲,结果应该是传入操作数长度的两倍(尽管我认为没有使用一点重要值)。(自从1974年我为一台RCA/NASA计算机做乘法/除法运算以来,我就没怎么考虑过这件事。)