题目
机器数字长为8位,求-128对应的二进制[1]真值、原码[2]、补码、反码和移码形式。
机器数字长为8位,求-128对应的二进制[1]真值、原码[2]、补码、反码和移码形式。
题目解答
答案
真值为-128。
原码和反码均无法表示-128,因8位机器数中-128超出范围。
补码中,-128表示为10000000。
移码为补码符号位取反,即00000000。
综上:
- 真值:-128。
- 原码:无法表示。
- 反码:无法表示。
- 补码:10000000。
- 移码:00000000。
解析
本题主要考查机器数的真值、原码、补码、反码和移码的概念及相互转换,解题思路是先明确各种码制的定义和表示规则,再根据规则判断 -128 在 8 位机器数中的表示情况。
- 真值:
真值就是机器数所表示的实际数值,所以 -128 的真值就是 -128。 - 原码:
原码的表示规则是,最高位为符号位(0 表示正数,1 表示负数),其余位表示数值的绝对值。
对于 8 位机器数,原码能表示的数值范围是$-(2^{7}-1)$到$2^{7}-1$,即 -127 到 127。
因为$-128$超出了这个范围,所以 8 位机器数的原码无法表示 -128。 - 反码:
反码的表示规则是,正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其余位取反。
同样由于 8 位机器数原码无法表示 -128,所以反码也无法表示 -128。 - 补码:
补码的表示规则是,正数的补码与原码相同,负数的补码是在反码的基础上加 1。
对于 -128,我们可以通过补码的运算规则来推导。
已知$128 = 2^{7}$,在 8 位二进制中,$128$的二进制表示为$10000000$。
那么 -128 的补码可以通过$0 - 128$来计算,在计算机中减法可以转化为加法,即$0 + (-128)$。
0 的 8 位补码是$00000000$,-128 可以看作是$10000000$(这里是一种特殊的处理方式),所以 -128 的 8 位补码是$10000000$。 - 移码:
移码的表示规则是,移码是在补码的基础上,符号位取反。
已知 -128 的补码是$10000000$,将其符号位取反,得到移码为$00000000$。