IEEE 754浮点标准

java和C都遵循IEEE 754浮点数标准wiki介绍. 先来回顾一下科学记数法, 比如123这个数字, 使用科学记数法, 可以写作:
1.23 x 102

计算机的世界都是二进制的, 123的二进制为1111011, 可以记为:
1.111011 x 26
其中整数位1为固定值, 有效信息有小数位0.111011和指数6
双精度的浮点数的表示方式为:

     63          62 .... 52           51  ......    0
     符号位sign   指数偏移exp(11bit)   小数fraction(52bit)
区域说明
符号位0为正数, 1表示负数
指数偏移实际指数+1023, 这么做是为了将负指数转换成正值; 对于数字0, 这个值为0
小数小数点后面的二进制; 对于数字0, 则全为0

继续以double类型的123举例
sign = 0
exp = 1023 + 6 = 1029 = 10000000101B, 不足11bit, 则在前面补0
fraction = 111011, 不足52bit, 则在后面补0
完整的二进制形式为
0 1000000 0101 1110 11 00 00000000000000000000000000000000000000000000
转换成16进制为 40 5E C0 00 00 00 00 00
在小端字节序的系统上(低位存放在低字节上), 显示为 00 00 00 00 00 C0 5E 40

计算double能表达的最大值
指数能达到的最大值为211-1023 = 1024,
因此double最大值为1.fffffffffffff x 21024 = 1.7976931348623157e+308

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值