float,double等表示的数值范围的计算
2011-03-21 12:21
288 查看
最近看了IEEE754浮点数的表示方法。在C的参考书中有提到float类型数据的表示范围为-3.4*10^38~+3.4*10^38。究竟如何计算该范围,分析如下:
对于单精度浮点数(float)来说,有一位符号位,指数位共8位,尾数共23位。指数能够表示的指数范围为-128~127。尾数为23位。当尾数全1时再加上小数点前面的1,指数取到最大正数127(8位,正数最大127,负数最小-128),浮点数取得正数的最大值。
+1.111111111111111111111*2^127(1.后面23个1,由于尾数的范围1~2,其最高位总为1,故只需存取小数部分,所以小数为是23位1),约等于2*2^127=3.4*10^38。为3.4*10^38负数亦然。
Double的计算与此类似,double的符号位为63位,指数为62~52位,共11位。表示的范围为-1024~1023。尾数为51~0。表示的范围为+1.111111111111111111111*2^1023(1.后面52个1)为1.7*10^308。负数亦然。
注:本文转自http://www.eetop.cn/blog/html/70/145970-18214.html
对于单精度浮点数(float)来说,有一位符号位,指数位共8位,尾数共23位。指数能够表示的指数范围为-128~127。尾数为23位。当尾数全1时再加上小数点前面的1,指数取到最大正数127(8位,正数最大127,负数最小-128),浮点数取得正数的最大值。
+1.111111111111111111111*2^127(1.后面23个1,由于尾数的范围1~2,其最高位总为1,故只需存取小数部分,所以小数为是23位1),约等于2*2^127=3.4*10^38。为3.4*10^38负数亦然。
Double的计算与此类似,double的符号位为63位,指数为62~52位,共11位。表示的范围为-1024~1023。尾数为51~0。表示的范围为+1.111111111111111111111*2^1023(1.后面52个1)为1.7*10^308。负数亦然。
注:本文转自http://www.eetop.cn/blog/html/70/145970-18214.html
相关文章推荐
- [转]关于float,double等表示的数值范围的计算
- 关于float,double等表示的数值范围的计算
- java基本类型(数值范围):浮点的底层表示定义,float计算快一些
- java基本类型(数值范围):浮点的底层表示定义,float计算快一些
- Java中,既然double类型比float类型,表示的数值范围更大,大家都用double类型不就行了,Java还发明float类型干什么?因为占内存少于double,其他没有任何优势了
- C/C++语言中计算int,float,double,char四种数据类型所能表示的数据范围
- 对于c语言int类型和float,以及double类型表示范围的计算
- c语言中计算int,float,double,char四种数据类型所能表示的数据范围
- java基本类型(数值范围):浮点的底层表示定义,float计算快一些
- C语言中关于float、double、long double精度及数值范围理解
- 关于float/double的取值范围和表示
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- C语言中关于float、double、long double精度及数值范围理解
- Java 浮点数 float和double类型的表示范围和精度
- C语言中关于float、double、long double精度及数值范围理解
- Java 浮点数 float和double类型的表示范围和精度
- Java 浮点数 float和double类型的表示范围和精度
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- 关于float和double类型能表示的数据范围和精度分析
- java数值范围以及float与double精度丢失问题