8位浮点数表示范围 其中符号位1位,阶码3位,尾码4位 搞迷糊了

对于浮点数的二级制表示有些凌乱,不懂rt这个应该怎么计算
哪位请帮忙解答一下这个问题,多谢!

目前多数系统都按照IEEE-754标准来规定浮点数的存储格式。IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶码和尾数。阶码即指数,尾数即有效小数位数。单精度格式阶码占8位,尾数占24位,符号位1位,双精度则为11位阶码,53位尾数和1位符号位,
显然差别就出来了。即使都是4字节存储的单精度浮点数,还有不使用IEEE754标准的,我记得字长32位的大型IBM系列机就是1位符号位,24位尾数,7位阶码,基数16,而不是2,与此标准不同。所以浮点数的表示范围依赖的因素较多较复杂,主要取决于表示一个浮点数所用的字节数和阶码的大小与长度。说法不一样,但应该都是有根据的。
最常用的32位规格化浮点数的表示范围是:
前提条件:阶码用移码表示,尾数用补码表示,每1位是符号位,阶码占8位,尾数占23位
可表示的最大正数:(1-2^-23)*2^127
最小正数:2^-129
最大负数:-2^-129
最小负数:-2^127

阶码为m,尾码为n,则范围为:[-1*2^(2^(m-1)),-2^(-n)*2^(-2^m)],0,[+2^(-n)*2^(-2^m),+(1-2^(-n))*2^(2^m))],
本题答案是:[-1*2^7,-2^(-4)*2^(-8) ],0,[2^(-4)*2^(-8),(1-2^(-4))*2^8]

阶码为m,尾码为n,则范围为:[-1*2^(2^(m-1)),-2^(-n)*2^(-2^m)],0,[+2^(-n)*2^(-2^m),+(1-2^(-n))*2^(2^(m-1)))],
本题答案是:[-1*2^7,-2^(-4)*2^(-8) ],0,[2^(-4)*2^(-8),(1-2^(-4))*2^7]

首先,八位浮点数的第一位是符号位,也就是正负数,这个我想可以不用介绍了。
我们从第二个开始,第二个部分是阶码,它表示什么呢?阶码是三个二进制位,它用来表示在后面4个二进制位【尾码】中,有几个二进制位是表示整数部分的。比如,如果阶码形式是0 0 1,它就表示在尾码中,只有前面两个位用来表示整数部分【1+1=2】。如果阶码形式为010,就表示有3个【2+1】位代表整数。如果阶码是011,则表示尾码全都是整数【3+1】,没有小数部分了。。。
再看最后的尾码部分,因为阶码那里确定了整数部分由前面几个二进制位表示了,所以尾码的整数我们可以跳过了【您也应该懂,对吧】,我们只看尾码中表示小数的部分:比如尾数形式位1101【整数部分占前面的1位】,它的后面三位是表示小数部分的,其中紧挨着整数的第一个二进制位是0.5,因为这个二进制位是1,所以是1乘以0.5,第二个二进制位代表0.25,因为它是0,所以是0乘以0.25=0,第三个是0.125,因为是1,所以是1乘以0.125,最后小数部分就是1*0.5 + 0*0.25 + 1*0.125 ,即小数部分就是0.625。。。

最后,我们来个实例来实战一下,八位二进制分别是: 1 001 1101,那么,这个八进制位换算成十进制浮点数是多少的,首先看符号位,它是1,代表这是负数。接着看阶码部分,是001,所以尾码部分的整数占2位【1+1】。最后看尾码部分,因为整数占前面两位,而前面两位是11,换算成十进制是3,再看后面的小数部分,第一个是0,就加上0乘以0.5,第二个是1,再加上1乘以0.25,最终结果是0+0.25。
所以,上面的八进制换算成浮点数也就是 -3.25。。。

http://blog.csdn.net/kingwolfofsky/article/details/4533404