在小数定点机中,为什么只有补码可以表示-1.0呢

这个问题可以拓展,在8位整数机器中,为什么只有补码可以表示-128呢?

这里先看小数定点机,8位小数定点机中的数据表示: 

S.XXXXXXX

S是正负符号位,后面的7个X是数值位。

如下都以8位二进制的小数定点机为例展开

原码:  实例1,二进制的0.1010000 = +( 1/2 + 1/8) =0.625

            实例2,二进制的1.1010000  = -( 1/2 + 1/8) =-0.625

同上,结合上例8位小数定点机数据格式:S.XXXXXXX

根据原码的含义,1.0以至于-1.0都超出了小数定点机的表示能力。由于原码表示不了1.0以至于-1.0,所以,反码也表示不了1.0和-1.0。那么按道理,补码应该也表示不了-1.0吧?

其实是可以的,不单可以表示-1.0,而且根据从原码到补码的计算规则的逆规则,补码必须能够表示-1.0

原因如下图:

猜你喜欢

转载自blog.csdn.net/eloudy/article/details/118675536
今日推荐