【发布时间】:2014-02-03 02:58:26
【问题描述】:
我很困惑在使用二进制乘法和二进制补码的以下问题中我哪里出错了。
我正在尝试乘以 12 * -6。
我们知道12 = 01100 和-6 = 11010,并且符号扩展我们得到00000 01100 * 11111 11010。我尝试将这两个数字相乘如下:
1111111010
x 0000001100
------------
0000000000
0000000000
1111111010
+ 1111111010
---------------
10111110111000
这绝对不是-72,那我做错了什么?
【问题讨论】:
-
你必须继续扩展标志。
-
也就是说,你应该得到 11111110111000
-
那么即使在被乘数和乘数被符号扩展之后,产品上也会发生符号扩展?
-
@user2485710 这是 2 的补码,不是符号幅度。
-
从技术上讲,您最终得到的结果应该是传入操作数的两倍(尽管我认为没有使用一点重要性)。 (自从 1974 年我为 RCA/NASA 计算机做乘法/除法算法以来,我没有过多考虑过这些东西。)