对于字长为8位,采用整数表示的计算机存储的二进制数 "11111111",在不同的编码方式下有不同的表示和对应十进制真值,以下是它们的计算:
原码:在原码中,最高位(即最左边的位)是符号位,0表示正数,1表示负数。因此,11111111的原码对应的十进制数值是 -127(因为其左边有一个隐含的符号位1,意味着这是一个负数),其余7位为127。
补码:补码用于表示有符号整数,它的计算方法是将该数的所有位取反(非),然后加1。所以:
反码:反码也是为了表示有符号整数,它的计算方法是将所有位取反(非)。所以11111111的反码和上述补码中的反码一样,为00000001,但是它是负数,因此十进制为-128。
移码:移码是一种常用于浮点运算的技术,它通过在原有数据的补码基础上加上一个偏移来完成。在这里,我们不需要对整数进行移码操作,因为我们这里讨论的是整数。所以对于这个问题,没有专门的“移码”表示。
无符号:无符号的11111111就是它的二进制值直接转换为十进制,没有符号问题。所以无符号的11111111对应的十进制数值是255(即(2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0))。
总结: