正数的二进制补码是否与二进制表示相同?
答案 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)
我还在学习,第一年是计算机科学专业的学生,希望它有所帮助。
答案 4 :(得分:1)
2号的正数不是相同的数字,它们不会以2的补码形式存储在内存中。 在正数的情况下,它们存储在存储器中,仅在负数的情况下,表示为2的补码形式 负数以2的补码形式存储,因为2的补码有利于减法。 示例:5 + -7 = -2 这里-7以2的补码形式(1001)存储。 0101 + 1001 = 1110 请注意,我们会自动获得否定答案
答案 5 :(得分:0)
这是事实。如果我们不在负数表示中加1,我们将得到值0和-0,这有点浪费。
答案 6 :(得分:-1)
您可以使用this检查数字在两个比赛中的表示方式。