两个补码表示正数是否相同?

时间:2009-04-27 15:31:46

标签: binary complement

正数的二进制补码是否与二进制表示相同?

7 个答案:

答案 0 :(得分:9)

我认为你在这里混淆了一些东西。正整数通常存储为简单的二进制数。 1是1,10是2,11是3等。负整数存储作为它们的绝对值的二进制补码,即相应的正整数。当使用这种表示法时,正数的两个补码是负数。

为了翻转数字的符号,您总是计算该数字的二进制补码:翻转所有位,然后加1.这与原始数字是正数还是负数无关。

示例:8位有符号二进制表示法中的3为00000011.要翻转符号,首先翻转所有位(11111100),然后加1(11111101)。所以,-3是11111101。要再次翻转符号,首先翻转所有位(00000010),然后加1(00000011),你可以看到这是相同的3。

答案 1 :(得分:8)

一些答案​​和评论将“两个补码表示法”和“两个补码”之间的关系弄糊涂了。这个问题可能需要澄清一点,但显然是在询问“两个补码表示法”。

两个补码表示法包括正数和负数。二进制数可能意味着很多东西,因此为了确定任何二进制数应该表示什么,首先必须知道正在使用的符号或编码。二进制数可以是无符号整数,二进制补码整数,IEEE浮点数,字符串或完全不同的东西。

因此,二进制补码表示法中的7是00000111,就像它是无符号整数一样。并且-7的二进制补码表示为11111001。

所以,是的,二进制补码表示法中的正整数用与无符号整数相同的方式表示(假设它是使用的位数的有效整数)。

答案 2 :(得分:7)

  

正数的两个补码表示法是否相同?

好的例子来自wiki,通过注意到256 = 255 + 1来实现与二进制补码的关系,并且(255 - x)是x的补码

<00> 0000 0111 = 7二进制补码是1111 1001 = -7

它的工作方式是msb(最高有效位)接收负值,所以在上面的情况下

  

-7 = 1001 = -8 + 0+ 0+ 1

编辑 - 以二进制补码表示法写入的正数与用无符号表示法写入的数字相同(尽管最高有效位必须为零)。通过反转其绝对值的所有位,然后在结果中加1,可以用二进制补码表示法写入负数。 Two's-complement notation

用k位二进制补码表示法表示的最大数是2 ^(k-1)-1

答案 3 :(得分:6)

从我在计算机科学课上学到的东西来看,两个补码,一个补码和有符号幅度只有正整数值才相同。这将与负整数值不同,其中对于一个补码,您必须翻转这些位,并且对于两个补码保持翻转位并添加1位以使负位变为绝对整数。

我还在学习,第一年是计算机科学专业的学生,​​希望它有所帮助。

答案 4 :(得分:1)

2号的正数不是相同的数字,它们不会以2的补码形式存储在内存中。 在正数的情况下,它们存储在存储器中,仅在负数的情况下,表示为2的补码形式 负数以2的补码形式存储,因为2的补码有利于减法。 示例:5 + -7 = -2 这里-7以2的补码形式(1001)存储。 0101 + 1001 = 1110 请注意,我们会自动获得否定答案

答案 5 :(得分:0)

这是事实。如果我们不在负数表示中加1,我们将得到值0和-0,这有点浪费。

答案 6 :(得分:-1)

您可以使用this检查数字在两个比赛中的表示方式。