我在课堂上被问到:
将以下十进制数表示为 2 的补码二进制数所需的最少位数是多少?-64 31 128
那么,首先,1 和 2 的补码二进制有什么区别?如何将十进制数转换为 2 的补码二进制表示?
我也想知道,是否可以有该十进制数的多种表示形式?如何找出所需的最少位数?
我在课堂上被问到:
将以下十进制数表示为 2 的补码二进制数所需的最少位数是多少?-64 31 128
那么,首先,1 和 2 的补码二进制有什么区别?如何将十进制数转换为 2 的补码二进制表示?
我也想知道,是否可以有该十进制数的多种表示形式?如何找出所需的最少位数?
1的补码和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