【发布时间】: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