13

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

4

7 回答 7

14

一些答案和评论正在混淆“二进制补码表示法”和“数字的二进制补码”之间的关系。这个问题可能需要稍微澄清一下,但它显然是在询问“二进制补码表示法”。

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

所以 7 在二进制补码表示法中是 00000111,就像它是一个无符号整数一样。二进制补码表示法中的 -7 是 11111001。

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

于 2009-04-27T17:13:49.023 回答
10

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

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

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

于 2009-04-27T16:41:43.763 回答
8

正数的二进制补码表示法是同一个数吗?

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

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

它的工作方式是 msb(最高有效位)接收一个负值,因此在上述情况下

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

编辑 -用二进制补码表示的正数与用无符号表示的数字相同(尽管最高有效位必须为零)。一个负数可以用二进制补码表示法写入,方法是将其绝对值的所有位取反,然后将结果加 1。补码符号

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

于 2009-04-27T15:39:53.973 回答
6

根据我在计算机科学课上学到的知识,二进制补码、一个补码和有符号幅度仅在正整数值中是相同的。这将与负整数值不同,对于一个补码,您必须翻转位,对于二进制补码,保留翻转的位并添加 1 位以将负位变为绝对整数。

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

于 2009-12-22T00:01:16.213 回答
1

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

于 2009-04-27T16:21:13.783 回答
0

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

于 2009-04-27T15:37:53.730 回答
-1

您可以使用来检查数字在二元组中的表示方式。

于 2009-05-17T05:41:11.820 回答