C语言进阶之路(番外篇float的存储方式)

本文详细介绍了C语言中浮点数(Float)的存储方式,遵循IEEE 754标准,包括符号位、指数位和尾数部分的处理。讨论了如何将浮点数5.5转换为二进制形式,并解释了指数的存储为什么要加上中间值127。还阐述了当指数全0和全1时的特殊情况,分别对应于极小值和无穷大。最后,探讨了浮点数的读取过程和计算原理。

c语言进阶之路

Float的存储方式

 浮点型存储方式是根据IEEE(电子和电子协会) 754规定的,(-1)^S* M *2^E

符号位(Sign):S=0为正数,S=1为负数

指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储

尾数部分(Mantissa):1<= m >2

在这里插入图片描述

列:

float a = 5.5//的储存方式

转换2进制为101.1

符号s=0

尾数m=1.011

指数e(101.1—>1.001移了多少位)=2

M和E的存储方式有不同

因为1<= M<2,每次都有1,为了精度更高舍弃它,拿出来在补回去

E是无符的,8位时候取值范围0~255

  应为E可能是负数 列:0.5---->0.1(这个是二进制-1)==2^-1=2/1---->(-1) ^0 *1.0 *2^-1 ----->e=e+127储存存进

所以IEEE规定E存储时要加一个中间值8位的中间值为127

M=011------>自动补齐20个0

E=127+2=129------>转换乘二进制放入内存

放入内存中的样子
在这里插入图片描述

float取出

float取出的结果

1:E不为全0也不为全1

取出 E-128=E

依旧以5.5为例子

E=129-128=2

M拿出来补1

M=1.011

(-1)^S*M *2^E------>者就是取出的结果

2:E为全0,1

如果全0的时候那么E存进去是多少8位的中间值是127 E+127=0那么E==-127

2^-127次方你自己算算这个数字

所以IEE给出为0

那么全1也同理得出,全1就表示他是无穷大(正负取符号位)

全0和全1不就是微积分中极限吗哈哈哈哈

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值