我理解消化后的浮点数存储

昨天开始学习C语言,记录下学习笔记:

 

1. 规定单精度浮点数用32bit表示(4Byte):

首位为符号位(0正1负),

8位指数位(表示小数位应该乘以2的多少次方),

23位小数位(十进制原值用二进制表示并规整为科学计数法后带一位整数的二进制小数,由于整数位必须为1所以省略整数部分,只保存小数部分)。

 

2. 规定双精度浮点数用64bit表示(8Byte):

首位为符号位,

11位指数位,

52位小数位。

 

3. IEEE规定指数部分需要加上偏移值  ,其中的  为存储指数的比特的长度, =8时偏移值为127,e=11时偏移值为1023。

 

4. 以下图为例:

0.15625(10)= (2^-3 + 2^-5)(10) = 0.00101(2) = (1.01 * 2^-3)(2),

所以阶码为 (-3 + (2^(8-1) - 1))(10) = (-3 + 127)(10) = 124(10) = 0111 1100(2)

小数部分为 1.01 后补21个0后的小数部分,即形成下图所示的存储格式。

此为单精度浮点数的存储方式,双精度浮点数的存储方式同理,只不过阶码的移码是1023(+1023(10))。

截图来源:http://www.runoob.com/cprogramming/c-variables.html

 

关于IEEE754的更多详情参见百度百科IEEE754标准:https://baike.baidu.com/item/IEEE%20754/3869922?fr=aladdin

转载于:https://www.cnblogs.com/mobius2018/p/9842575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值