Binary 2的补码数据表示法

Binary 2的补码数据表示法,binary,computer-science,decimal,base,twos-complement,Binary,Computer Science,Decimal,Base,Twos Complement,这是我在过去的一篇论文中看到的一个问题。我想我理解10的补语,但不理解下面关于2的赞美的问题。另外,2的恭维和二进制有什么关系 基数10中的哪个数字由k=4的2秒补码中的1110表示?如果k=5,答案会改变吗 请解释答案,谢谢您的帮助 Two's complete是一种用二进制表示负数的方法。我不明白它是如何运作的,但它确实有,背后有数学基础。 以数字6为例。二进制是0110。然后,为了表示-6,需要对其应用二的补码算法 算法是从右向左复制所有数字。当你第一次遇到1时,你将它保持原样,但从那一点

这是我在过去的一篇论文中看到的一个问题。我想我理解10的补语,但不理解下面关于2的赞美的问题。另外,2的恭维和二进制有什么关系

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


请解释答案,谢谢您的帮助

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

算法是从右向左复制所有数字。当你第一次遇到1时,你将它保持原样,但从那一点开始,当你向左转时,你将反转所有的数字。在这个例子中,让我们从右到左:首先我们有0。然后我们有1个。我们复制了它,所以同时我们有10个。因为我们遇到了1,我们现在需要反转所有的位。下一个是1,我们把它复制为0,现在是010。最左边的位是0,所以我们将它反转为1,最后得到1010。这是4位数的-6。2的补码中的负数总是有1表示MSB最左边的位-最重要的位

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

8-6美元多少钱?就像8+-6。二的补码是1000+1010=10010

因为我们使用4位数字,所以修剪MSB并得到0010,即2,即8-6。它起作用了

如果取-61010并再次对其应用二者的补码,则使用第二种方法得到1010+1=0101+1=0110=6。所以对负数应用二的补码算法可以揭示它们的绝对值

现在我们可以进入你问题的第二部分:1110。在正数世界中,这是14。但是在正数和负数的运算中,我们看到,因为这个数中最重要的MSB位是1,所以这个数是负数。就像在-6的例子中,应用2的补码将得到它的绝对值。因此:1110+1=0001+1=0010=2。所以1110是-2

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

为了回答这个问题,我们先用5位数字表示2,然后应用2的补码转换

2是00010。二者的完备性为00010+1=11101+1=11110

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

这种现象称为符号扩展。它表示,如果负数可以用k位表示,则:a MSB将为1,b如果要使用k位以上,则原始MSB和左侧的所有位都将为1

再说一次,它背后有数学来证明这一点,这我并不熟悉

顺便说一下,你可以看看我的网站。碰巧你的问题正好碰到了我在一个叫做ChordBits的产品中解决的问题,在这个产品中,你可以打开和关闭位,在其他选项中,你可以对它们应用两个补码,并查看共享软件版本的功能是否完全正常


Cheers

k是最大位数吗?有趣的是,应用无限指数级数求和公式来计算sum[i=0..inf]2^n会得到-1。因此,如果一个人认为最高有效位是从无限多个位中延伸出来的符号,那么计算机的2的补码形式与二进制数的数学意义是一致的。