IEEE 754 浮点类型表示
2018-10-30 本文已影响0人
苏小小北
双十一要来了额
参考https://www.cnblogs.com/xkfz007/articles/2590472.html
1.前言
看了很多IEEE 754,死脑筋,老是忘,这次就详细记下来,同时分享下浮点类型各种处理方式
2.综述
介绍IEEE 754之前,先说下科学计数法,这个应该都很熟悉。
科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤a<10,n为整数),这种记数法叫做科学记数法。当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。
例如:19971400000000=1.99714×10^13。计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。
类似的,IEEE 754 也是采用这种方式。
计算机中数据均是按二进制的方式存储的,浮点数的存储也是如此。但是由于浮点数的特殊性(long的最大值为230584309213693951,才18位,表示小数的精度比较低。而浮点数大多小数部分比较长,有效数字比较长),无法采用整数的存储方式,浮点数需要有特定的存储方式。浮点数可以分为3个部分
- sign(符号)1 位
- exponent(指数) float bias = 127 占8位, double bias=1023 占11位(保证指数一定是正数)
- fraction(尾数)float 23位 double 52位
例如:0.8125,对应二进制为
p.s
1.十进制整数转换为二进制整数:除2取余,逆序排列
2.十进制小数转换为二进制小数:乘2取整,顺序排列
参考https://www.cnblogs.com/xkfz007/articles/2590472.html
那么的IEEE表示形式为:
- sign:正数,为 0
- exponent:指数,-3
- fraction:尾数,101(默认首位的1省略,实际上为1101,公认第1位为1,所以省略)
那么对应的float形式的二进制为:
那么对应的double形式的二进制为:
float类型最大值为:
8位指数,最大值为255,bias = 127,所以exponent的最大值为128,尾数最大值为,小于2,所以
这里也就是为什么float只占用32位,表示的范围却比占用64位的long还要大。
3.后言
那么,float的最小值是多少呢?
其他
本人也是在慢慢学习中,如有错误还请原谅、敬请指出,谢谢!