【问题标题】:Substracting two's complement减去补码
【发布时间】:2015-12-17 13:31:51
【问题描述】:

B=01010101 A=10101010

它们已经是二进制补码,我必须做 B - A。

我不知道该怎么做,因为如果 A 有一个 1 就意味着它是一个负数。那么运算就是B-(-A)或者B+A。

但是 B+A=11111111(二进制的 000000001),这似乎不正确。

也许我没有“明白”,但我真的不知道我应该做什么。

【问题讨论】:

  • B=85,A=-86。 A + B = -1。 A - B = A + ~B + 1 = ?
  • 从一些较小的例子开始(例如 3 位长),看看会发生什么。

标签: math binary twos-complement


【解决方案1】:

你的任务是找到 B-A。如果 A 是负数,则 A = -C,在这种情况下,C = 86。 换句话说,B-A = B+C(不是 B+A)。 您应该简单地从 A 计算 C(反转所有单个位,然后加一个:01010101+1 = 01010110),然后将 B 与计算的数字相加:

考虑到二进制补码中的 A 和 B: 我认为答案是 10101011 或 -85! 原因如下:

      01010101 (-171)
  +   01010110 (86)
**=   10101011 (-85)**

【讨论】:

  • 或者就8位有符号值而言,-256+171 = -85
  • 我已经到了这一点。很高兴看到我终于正确地思考了。问题是练习要求一个 8 位数字,所以我不确定哪个是答案。 -85 是 8 位但错误,171 是 9 位但正确... @ChronoKitsune
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 2017-02-13
  • 1970-01-01
相关资源
最近更新 更多