2的补码数据表示

时间:2012-03-21 18:22:13

标签: binary computer-science decimal base twos-complement

这是我在过去的一篇论文中看到的一个问题。我想我理解10s补充,但不理解以下关于两个赞美的问题。另外,两个人的恭维与二进制有什么关系?

  

基数10中的数字是由1110表示为2s补码,k = 4?如果k = 5,答案会改变吗?

请解释答案,谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

二进制补码是一种用二进制表示负数的方法。我不明白它是如何工作的,但确实如此,它背后有数学基础。 例如,数字为6.在二进制中它是0110.然后为了表示-6,你需要对其应用二进制补码算法。

算法是从右到左复制所有数字。第一次遇到1时你会保持原样,但是从那一点开始,当你向前推进时,你会反转所有的数字。在这个例子中,让我们从右到左:首先我们有0.然后我们有1.我们复制它,所以同时我们有10.因为我们遇到1,我们现在需要反转所有的位。所以下一个是1,我们把它复制为0,所以我们现在有010.最左边的位是0所以我们把它反转为1,所以我们最终得到1010.这是4位数的-6。对于MSB(最左边的位 - 最高有效位),二进制补码中的负数始终为1。

在继续之前,转换的方法很短。你只需将所有位反转,然后加1,得到相同的结果。如果我们反转0110,我们得到1001.添加1给出,再次1010.不知道它是如何工作但它确实如此。

8 - 6多少钱?这就像8 +( - 6)。在两个补码中,它是1000 + 1010 = 10010

由于我们使用4位数字,我们修剪MSB并得到0010,这是2,即8 - 6.它可以工作。

如果你取-6(1010)并再次对其应用二进制补码,则得到(使用第二种方法)invert(1010)+ 1 = 0101 + 1 = 0110 = 6.因此将二进制补码算法应用于负数数字显示了它们的绝对值。

现在我们可以继续讨论问题的第二部分:1110。在正数世界中,这是14.但在正数和负数的工作中,我们看到自从MSB(最重要的位)在这个数字是1,数字是负数。就像在-6示例中一样,应用它的两个补码将给出它的绝对值。因此:反转(1110)+ 1 = 0001 + 1 = 0010 = 2.所以1110是-2。

我相信问题中的k是位数。如果k是5那么我们如何表示-2?

要回答我们从5个数字开始的2开始,然后应用二进制补码转换。

2是00010.两个完全相反的是反转(00010)+ 1 = 11101 + 1 = 11110。

你可以得出结论,如果我们有8位,那么-2将是11111110。

这种现象称为符号扩展。它表示如果负数可以用k位表示,那么:a)MSB将为1,并且b)如果你想使用多于k位,那么原始MSB和左边的所有位都将是1。

再次,它背后有数学证明它,我不熟悉。

顺便说一下,你可以查看我的网站。碰巧你的问题恰好解决了我在一个名为ChordBits的产品中解决的问题,在这个产品中你可以打开和关闭位,在其他选项中,你可以对它们应用两个补码并查看它的外观(共享软件版本是完全的)功能性的)。 www.codechords.com

干杯