float和double型数据的数值范围的求法

大家帮帮忙啊,解释一下它们的数值范围的详细求法。谢。

第1个回答  2020-05-30
一个float型
实数

内存
中占4个
字节
,即32个
二进制
bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位)。
1、符号位。最高位也就是第31位表示这个实数是正数还是
负数
,为0表示正数或0,为1表示负数.
2、阶码。第30位到第23位这8个二进制位表示该实数转化为规格化的二进制实数后的指数与127(127即所谓
偏移量
)之和即所谓阶码.
规格化的二进制实数的指数只能在-127----+127之间,所以,一个float型数的
最大值
在+2^127即+3.4*10^38,最小值在-2^127即-3.4*10^38.
3、尾数。其他最低的23位即第22位到第0位表示该实数转化为规格化的二进制实数后小数点以后的其余各位即所谓尾数.
Double的计算与此类似,double的符号位为63位,指数为62~52位,共11位。表示的范围为-1024~1023。尾数为51~0。表示的范围为-1.7*10^308~+1.7*10^308