(注意:pow(2,E)表示2的E次方)
c语言单精度浮点数float类型大小为4字节,共32位。
其中最高1位为符号位,符号位后的8位为指数区,剩下23位为数据区。
浮点型表示方式大概为M*pow(2,E)
其中M为精度数,E为2的指数
符号位顾名思义,1表示负数,0代表正数
下面不考虑符号位
1.当指数区全为0时,E=pow(2,8-1)+2=-126,M=数据区表示的大小/pow(2,23),所以数值为M*pow(2,-126)
如0 00000000 11111111111111111111111为((pow(2,23)-1)/pow(2,23))*pow(2,-126)
2.指数区不全为0时,E=pow(2,(8-1)+1+指数区值),如01111111为1
注意M=1+(数据区表示的大小/pow(2,23)),数值为M*pow(2,E)=M*pow(2,pow(2,(8-1)+1+指数区值))
如1 01111111 00000000000000000000000为1*pow(2,0)=1.0
个人浅薄之见,如有不妥,还请纠正。