有人在课堂上问我:
将以下十进制数表示为2的补码二进制数所需的最小位数是多少?-6431128
-
那么,首先,1和2的补码二进制之间的区别是什么?如何将十进制数转换为2的补码二进制表示?
-
我还想知道,这个十进制数字有多种表示形式吗?如何找出所需比特的最少数量?
-
1和2的补码之间的差异:
- 在1的补码中,负数表示为所有位翻转的正数。例如-6就是。。111001,因为6是。。000110
- 在2的补码中,负数表示为所有位翻转的正数,加一。例如-6就是。。111001+1=。。111010
-
一个十进制数字在二进制中的多重表示:一个数字在二进制的表示是唯一的,但有一个例外:在1的补码中,数字0既可以写成0,也可以写成。。111.
注意,在这两种情况下,负数都有一个表示形式,左边有一个1的无限字符串。在实践中,可用的比特数量是有限的,所以我们只使用一些最右边的比特。惯例是,如果最左边的比特是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