解析浮点数底层存储方式

说到浮点数我们不得不说一下定点数

含义:计算机定义了两种小数,分别是定点数和浮点数。

定点数:定点数的小数点的位置是固定的,字节的长度一旦在系统中是固定的,那么它的整数部分和小数部分也随之固定,所以定点数所表示的范围也是有限的。

相比于定点数,浮点数更加的复杂,它是采用科学计数法来表示的,分别由符号位、偏移量(也叫阶码)、有效数字三部分组成,如果使用不当则会造成如下计算值与理论值不一致的情况。

float f1 = 0.5f;
float f2 = 0.4f;
float f3 = f1 - f2;//结果为0.09999999998,idea运行的结果显示为0.099999994,这个我们不用纠结它们为什么不同

那么我们首先得知道科学计数法:

        浮点数是计算机用来表示小数的一种数据类型,在数学里面我们都知道这种方法表示一个极大或者极小的数值。

        那么浮点数应该如何表示呢?

        上面也说了浮点数就是有符号位、偏移量、有效数字来表示的,那么是如何用二进制的来表示符号位、偏移量和有效数字的呢?

        当前流行的浮点数标准是IEEE754,该标准规定了4种浮点数类型:单精度、双精度、延伸单精度、延伸双精度。前两种类型是最常用的。

 因为浮点数无法表示0,所以取值范围就分为两个区间:正数取值范围和负数取值范围。下面将着重分析单精度浮点型,而双精度浮点型与其相比只是位数不同而已,完全可以触类旁通。以单精度浮点型为例,它被分配了4个字节,总共32位。

 以7.125转换二进制为例:

 

如有不当之处,望之处,定改!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来一沓Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值