【问题标题】:decimal conversion using 5 bit two's complement使用 5 位二进制补码进行十进制转换
【发布时间】:2014-01-30 17:11:25
【问题描述】:

我被要求展示使用 5 位二进制补码计算 11+6。我发现一些规则令人困惑,但我想出了如下所示的答案。请让我知道它是否正确或如果错误需要做什么。

11 的补码是
01011
6的补码是
00110
如果需要,现在使用运营商添加它们:

01011 -----11 二进制
00110 -----6 二进制
10001 ---总计
十进制是17。这是正确的计算方法吗???因为我的二进制结果显示 10001。不是 10001 应该意味着 -1,因为二进制补码中的第一位是符号位。如果错了,请帮我解决这个问题。感谢您的帮助。

【问题讨论】:

  • 不,10001 不应该意味着 -1。你查过什么是补码吗?
  • 我做了很多研究。 10001 给了我 17 的十进制数,但根据二进制补码,第一位不应该是符号位,在这种情况下是 1,据我所知,1 表示负数。但结果肯定不能是-1。所以我尝试反转它们,因为结果是负面的。反转 10001,得到 01110,这将给出 14,但这又不是正确的答案。我真的迷失了这个。
  • 要获得二进制补码的否定(通常简称为“二进制补码”.. 或简称为“否定”),将数字取反并加一(相当于减一并取反)。在这种情况下,-10001 = 01111,即 15,因此 10001 为 -15。要确认,请添加 15,然后观察您得到零。
  • 对不起,我忘了提到增量部分(+1),但它仍然给出了错误的答案。它似乎没有给出 17,这将是唯一正确的答案。
  • 10001 显然已经 17 岁了,但没有使用任何有趣的解释。您只是将其视为未签名。

标签: algorithm math binary decimal twos-complement


【解决方案1】:

让我们解释一下它是如何工作的。您知道 1 在 5 位二进制表示中表示为 00001。要获得 -1,(2 的补码)的已知方法是:

  1. 反转所有位,即11110
  2. 将 1 加到前面的结果中,导致 11111 等于 31 十进制基数(无符号)。

因此,10001 不等于 -1。

现在,我们以 11(以 10 为底)为例。我们知道 11 等于 01011

  1. 反转所有位 => 10100
  2. add 1 => 10101 在无符号模式下等于 21,在有符号模式下等于 -11。

然后您可以推断10001 在有符号模式下为 -15,在无符号模式下为 17。

还要小心,带符号的 5 位整数的范围是 -16 到 15。无符号的 5 位整数的范围是 0 到 31。在您的情况下,答案是 17,这意味着它是无符号的整数或 -15 作为有符号整数

希望对你有所帮助。

【讨论】:

  • 是的,我明白你的意思,但我应该使用 5 位二进制补码,使用左边的第一位作为符号位。我们知道 11+16 是 17 但给出的结果 10001 是溢出错误的结果。我们可以简单地告诉这一点,因为应该是 17 的和的大小超出了表示的限制/范围并产生了错误,而且我们知道,5 位二进制补码表示的范围是 -16 到 15。它产生溢出错误。结果可以接受吗?因为我们根本无法用符号表示 5 位系统中的 17
  • @ComputerScienceStudent 看看我编辑的答案。你应该明白。
  • 非常感谢。这清除了事情。在无符号整数的情况下,我将给出 10001 作为我的答案。
  • @ComputerScienceStudent 如果我的回答对您有帮助,请不要忘记通过检查将其标记为“已接受的答案”。
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2014-04-16
  • 2014-11-15
  • 2011-09-03
  • 1970-01-01
相关资源
最近更新 更多