一个正数的二进制补码记法与它的二进制表示法是否相同?
发布于 2009-04-27 15:39:54
是一个正数的二的补码记法吗?
wiki中的一个很好的例子是,通过注意256 = 255 + 1来实现与2的补码的关系,并且(255−x)是x的1的补码
0000 0111=7的二进制补码是1111 1001= -7
它的工作方式是msb(最高有效位)接收负值,因此在上面的情况下
-7 = 1001= -8 + 0+ 0+ 1
编辑-用二进制补码表示法编写的正数与用无符号表示法编写的数字相同(尽管最高有效位必须为零)。负数可以通过反转其绝对值的所有位,然后将结果加1,以二的补码表示法写入。Two's-complement notation
可以用k位二进制补码表示法表示的最大数字是2^(k-1)−1
发布于 2009-04-27 17:13:49
一些答案和评论混淆了“二补记法”和“一个数字的二补”之间的关系。这个问题可能需要澄清一点,但它显然是在问“二的补码表示法”。
二的补码表示法包括正数和负数。二进制数可以表示很多东西,所以为了确定任何二进制数应该表示什么,必须首先知道使用的是什么符号或编码。二进制数可以是无符号整数、二进制补码整数、IEEE浮点数、字符串或其他完全的数字。
因此,2的补码表示法中的7是00000111,就像它是一个无符号整数一样。2的补码表示法中的-7是11111001。
因此,是的,2的补码表示法中的正整数与无符号整数的表示方式相同(假设它是所用位数的有效整数)。
发布于 2009-04-27 16:41:44
我认为你在这里搞混了一些东西。正整数通常存储为简单二进制数。1是1,10是2,11是3,依此类推。负整数存储为其绝对值的2的补码,即相应的正整数的补码。当使用这种记法时,两个正数的补码是一个负数。
为了反转数字的符号,你总是计算该数字的2的补码:反转所有位,然后加1。这与原始数字是正数还是负数无关。
示例:8位有符号二进制表示法中的3是00000011。要翻转符号,首先要翻转所有位(11111100),然后加1 (11111101)。因此,-3是11111101。要再次翻转符号,首先要翻转所有位(00000010),然后添加1 (00000011),您可以看到这是相同的3。
https://stackoverflow.com/questions/794062
复制相似问题