【问题标题】:Two's complement binary multiplication二进制补码二进制乘法
【发布时间】: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 计算机做乘法/除法算法以来,我没有过多考虑过这些东西。)

标签: binary twos-complement


【解决方案1】:

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

10111110111000

截断为

1110111000

你会发现这确实是-72

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    相关资源
    最近更新 更多