我认为你在这里混淆了一些东西.正整数通常存储为简单的二进制数.1是1,10是2,11是3等.负整数被存储为它们的绝对值的二进制补码,即相应的正整数.当使用这种表示法时,正数的两个补码是负数.
为了翻转数字的符号,您总是计算该数字的二进制补码:翻转所有位,然后加1.这与原始数字是正数还是负数无关.
示例:3位8位有符号二进制表示法是00000011.要翻转符号,首先翻转所有位(11111100),然后加1(11111101).所以,-3是11111101.要再次翻转符号,首先翻转所有位(00000010),然后加1(00000011),你可以看到这是相同的3.
一些答案和评论是将"两个补码表示法"和"两个补码"之间的关系弄糊涂了.这个问题可能需要澄清一点,但显然是在询问"两个补码表示法".
二进制补码表示包括正数和负数.二进制数可能意味着很多东西,因此为了确定任何二进制数应该表示什么,必须首先知道正在使用的符号或编码.二进制数可以是无符号整数,二进制补码整数,IEEE浮点数,字符串或其他完全匹配.
所以7的二进制补码表示法是00000111,就像它是无符号整数一样.-7的二进制补码表示为11111001.
所以,是的,二进制补码表示法中的正整数表示方式与无符号整数相同(假设它是使用的位数的有效整数).
小智 6
根据我在计算机科学课上学到的东西,两个补码,一个补码和有符号幅度只有正整数值才相同.这将与负整数值不同,其中对于一个补码,您将不得不翻转这些位,并且对于两个补码保持翻转位并添加1位以使负位变为其绝对整数.
我还在学习,第一年是计算机科学专业的学生,希望它有所帮助.