IEEE754标准 单精度(32位)/双精度(64位)浮点数解码

1.标准

http://grouper.ieee.org/groups/754/

2.分析

(1)单精度(32位)浮点数的结构:

图1

名称                                         长度        比特位置

符号位    Sign  (S)             : 1bit       (b31)
指数部分Exponent (E)      : 8bit       (b30-b23)
尾数部分Mantissa   (M)    : 23bit     (b22-b0)

其中的指数部分(E)采用的偏置码(biased)的形式来表示正负指数,若E<127则为负的指数,否则为非负的指数。

另外尾数部分M存储的是当把一个浮点数规范化表示后的1.zozooz...(二进制的)形式的zozooz的部分的比特串,共23位.

求值方法: (-1)^S*(1.M)*2^(E-127)  (公式1)

注意:%f输出float类型,输出6位小数,有效位数一般为7位;

(2)双精度(64位)浮点数的结构:

图2

名称                                        长度        比特位置

符号位    Sign  (S)            : 1bit        (b63)
指数部分Exponent (E)     : 11bit      (b62-b52)
尾数部分Mantissa   (M)   : 52bit      (b51-b0)

双精度的指数部分(E)采用的偏置码为1023

求值方法:(-1)^S*(1.M)*2^(E-1023)   (公式2)

注意:双精度数也可用%f格式输出,它的有效位一般为16位,给出小数6位。(这一点在计算金额的时候尤为重要,超过有效位的数字是无意义的,一般会出错。)

举例分析:

float  a=7.5, doule a1=7.5 结果解释:

(7.5)10=(111.1)2=1.111*2^2;

以Float在内存中存储:

S=0;

E=(2+127)10=10000001;

M=111;


图3

以Double在内存中存储:

S=0;

E=(2+1023)10=( 10000000001)2

M=111;


图4

3.附3个工具

进制转换工具:

http://tool.oschina.net/hexconvert/

单精度浮点数内存中编码:

https://www.h-schmidt.net/FloatConverter/IEEE754.html

双精度浮点数内存中编码:

http://www.binaryconvert.com/convert_double.html

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值