【问题标题】:14-Complement Multiplication between 9820 and 48239820 和 4823 之间的 14 补码乘法
【发布时间】:2020-12-02 17:49:26
【问题描述】:

我必须将 9820 和 4823 乘以 14- 补码。我知道结果是 C7A75060,但我不知道如何到达那里。当我必须将 8 与 4823 相乘时,我的问题就出现了,我得到 2893A,但我知道这是错误的。我该怎么做?

【问题讨论】:

  • 也许您可以解释(或参考网页)您所说的 14 补码乘法是什么意思?这似乎不是一个标准的编程术语。
  • @JohanC:这就像二进制补码算术,但generalized to higher bases
  • @PresidentJamesK.Polk 非常感谢您的澄清。补码部分似乎与负数有关,也需要为其设置固定位数。那么,有人可能会将这个问题解释为只是关于 base-14 计算?
  • @JohanC:这就是我的解释。我不确定补充业务的来源,如果有的话。也许是因为溢出?

标签: math integer multiplication complement


【解决方案1】:

您必须小心使用基本补码来跟踪您有多少位数字,这样您就知道哪个数字包含(名义上的)符号。假设您在这里(尝试)将 4 位 base-14-complement 相乘以获得 8 位 base-14-complement,您需要仔细处理最高位数。所以94 是符号数字,9 表示负数。因此,当您尝试将94823 相乘时,问题很可能出现在您的最后一步,实际上您应该使用-5 * 4823 = -18CB1 = C512D。将其与您获得的其他部分产品相结合

 0 * 4823 =    00000
 2 * 4823 =   09246
 8 * 4823 =  2893A
-5 * 4823 = C512D
           ---------
            C7A75060

另一种等效的方法是将符号视为(额外的)独立数字:

 0 * 4823 =     00000
 2 * 4823 =    09246
 8 * 4823 =   2893A
 9 * 4823 =  2D35D
-1 * 4823 =  95BB
            ---------
             C7A75060

【讨论】:

  • 那么前导数字为 7 或更大意味着它是负数吗?
  • 是 -- 前导数字 >= base/2 是符号的编码方式。
猜你喜欢
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多