IEEE 754浮点标准 Float.floatToRawIntBits的返回值具体意思

最近在项目中看到一行这样的代码

int i = Float.floatToRawIntBits(9f);

为了搞懂返回值具体是什么意思,特此查询并记录下来

1.IEEE 754浮点标准

附链接IEEE 754标准
这是我看到的讲的比较好的,能搞懂浮点数是怎么回事,怎么确定的。
其中的定义

符号位 s(Sign)决定数是正数(s=0)还是负数(s=1),而对于数值 0 的符号位解释则作为特殊情况处理。

有效数字位(或者称为尾数位) M(Significand)是二进制小数,它的取值范围为 1~2-ε,或者为
0~1-ε。它也被称为尾数位(Mantissa)、系数位(Coefficient),甚至还被称作“小数”。

指数位 E(Exponent)是 2 的幂(可能是负数),它的作用是对浮点数加权。

2.代码的意思理解

以上的代码返回了1091567616,不难看出这是个10进制的数字,我将其转换为二进制

#十进制
1091567616
#二进制
0 10000010 00100000000000000000000

我们先把9转换为二进制为1001,换成指数表示形式为1.001*2^3,指数最高为3,然后将3+127得到指数位二进制10000010(至于为什么是127,附链接为什么是127
如果你看了上面的文章,就会看懂,S位是0,指数位是10000010,尾数位是00100000000000000000000
这是完全符合IEEE754标准的,f可以理解为单精度,所以上面的代码返回的就是该数值的浮点数的十进制数字。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值