我在课堂上被问到:
将以下十进制数表示为2的补码二进制数需要的最小位数是多少? -64 31 128
所以,首先,1和2的补码二进制有什么区别?如何将十进制数转换为2的补码二进制表示?
我也想知道,是否可以对该十进制数进行多次表示?如何找出所需位数最少?
答案 0 :(得分:3)
1和2补码之间的区别:
二进制数字的多个表示形式:二进制数字的表示形式是唯一的,但是有一个例外:在1的补码中,数字0可以写为0和..111。
请注意,在这两种情况下,负数都有一个表示,左边是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