java 浮点数的n次方_java中浮点数表示方式

java虚拟机中的浮点数分为float和double两种,分别为32位和64位.它参考了IEEE 754的规范对浮点数进行处理。下面以float为例 ,分析一下float数的表示方法.

float的32位分成三个部分来表示一个浮点数:

c0dc86f85abdddcbff85c40f5dc0fe48.png

浮点数的取值计算公式为:

52da9ec01a122ab1997b2ea0f00d9a6a.png

解析:

1) 当符号位s的取值为0时,sflag为1, 当s为1时,sflag为-1. 所以有:

b35e265bfe516c0afddba622ce9623a1.png

2) e 为指数位,用 8 位表示

3)  m 为尾数值,占用空间为23位,但是根据 e 的取值,有 24 位精度。所以引入了一个附加位,规则如下:  m的值会根据e的值会动态变化。 当8个指数位e全部为0,尾数位m附加0(在左边附加),否则,附加1.

以-5的表示为:

System.out.println( Integer.toBinaryString(Float.floatToRawIntBits(-5)) );

结果为:

1 1000 0001 0100 0000 0000 0000 0000 000

符号位 指数位 尾数位

指数位1000 0001不全为0,所以尾数位(从左边)附加1,实际 尾数位为:

1 + 010 0000 0000 0000 0000 0000 = 1010 0000 0000 0000 0000 0000

按照上面的公式:

23a5665b4bd646307c3dbab65e202455.png

计算各部份的值:

1)     sflag:    -1

2) m的计算复杂点,尾数位表示2的指数次方的和。计算过程:

43916bc407e35a96e2dd97e8dc7e86c6.png

3)  尾数位:

a206eb39400630689227520fd3fcda36.png

所以,结果为:

77cb8d5c0542fa15d45eeb053c7bbd78.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值