十进制到2的补码二进制转换(表示十进制数所需的最少位数)

时间:2012-12-08 18:35:56

标签: binary

我在课堂上被问到:

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

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

  2. 我也想知道,是否可以对该十进制数进行多次表示?如何找出所需位数最少?

1 个答案:

答案 0 :(得分:3)

  1. 1和2补码之间的区别:

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

  3. 请注意,在这两种情况下,负数都有一个表示,左边是1的无限字符串。实际上,可用的位数是有限的,因此我们只使用最右边的一些位。惯例是,如果最左边的位为1,我们假设该数字在第一位之前的左侧有一个无限字符串。这意味着最左边的位给出了数字的符号:如果它为1则数字为负数,如果为0则数字为正数。其余的位给出了幅度。 (当然,这里有other ways to represent signed numbers不存在。)

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

            +8 in binary:  1000
    -8 in 1's complement: 10111
    -8 in 2's complement:  1000