1

我在课堂上被问到:

将以下十进制数表示为 2 的补码二进制数所需的最少位数是多少?-64 31 128

  1. 那么,首先,1 和 2 的补码二进制有什么区别?如何将十进制数转换为 2 的补码二进制表示?

  2. 我也想知道,是否可以有该十进制数的多种表示形式?如何找出所需的最少位数?

4

1 回答 1

3
  1. 1的补码和2的补码的区别:

    • 在 1 的补码中,负数表示为所有位翻转的正数。因此,例如 -6 将是 ..111001,因为 6 是 ..000110。
    • 在 2 的补码中,负数表示为所有位都翻转的正数加一。因此,例如 -6 将是 ..111001 + 1 = ..111010
  2. 二进制十进制数的多种表示:二进制数的表示是唯一的,但有一个例外:在 1 的补码中,数字 0 可以写为 0 和 ..111。

请注意,在这两种情况下,负数都表示左侧有无限的 1 字符串。实际上,可用的位数是有限的,所以我们只使用最右边的一些位。惯例是,如果最左边的位是 1,我们假设该数字在第一个位之前的左边有一个无限的字符串。这意味着最左边的位给出了数字的符号:如果是 1,则数字为负,如果为 0,则数字为正。其余位给出幅度。(当然,还有其他方法可以表示不成立的有符号数字。)

表示一个数字所需的最少位数可能在 1 和 2 的补码之间有所不同。例如,1 的补码需要至少 5 位来表示 -8,而 2 的补码可以使用 4:

        +8 in binary:  1000
-8 in 1's complement: 10111
-8 in 2's complement:  1000
于 2012-12-08T18:47:24.637 回答