读书人

移码的表示为何不同,该如何处理

发布时间: 2012-03-20 14:01:11 作者: rapoo

移码的表示为何不同
几乎所有的书上都说移码的表示就是:
如果有n+1位的阶码,那么偏移量就是2^n次方

但是ieee标准
单精度型的阶码用8位来表示 移码的表示偏移量为什么不是2^7=128而是127呢?

双精度型的阶码用11位来表示 移码的表示偏移量为什么不是2^10=1024而是1023呢


[解决办法]
当阶码的值为最大值即255(二进制11111111)时,该浮点数为无穷大或NaN,此时尾数为0时为无穷大,尾数不为0时为NaN,如果用E-128的移码方式,此时的实际阶码就是255-128=127,这个实际阶码的范围冲突了,用E-127的移码方式,此时的实际阶码为128,这样与浮点数的排序方式也相一致
[解决办法]
事实上也没有符号位,
阶码内存值 = 阶码+127

这样就把符号位给结合在阶码里面了,
不过也一样,
可以不理会这个细节 ~
===================
127 = 1111111 [2进制]

8位除去一个符号位剩余7位,能够表示的最大数值是 127,
就是这个结果了。
[解决办法]
阶码共8位,第一位表示符号,剩下7位为数值,所以阶码可表示 -2^7 -----2^7 -1

读书人网 >C++

热点推荐