【C语言进阶】数据的存储(浮点型)

目录

1.浮点数

2.浮点数在内存中的存储

3.指数E从内存中取出三种情况

4.例题


1.浮点数

  

2.浮点数在内存中的存储

  • 之前介绍的整型的范围:char、short、int等的范围可以在limits.h头文件中查找
  • float、double浮点型可以在float.h头文件中查找

  • 例如: 9.0 
  • 对应的二进制为 1001.0 ,科学计数法为 1.001 * 2 *3
  • 写成上面的形式为:(-1)^s * M * 2^E = (-1)^0 * 1.001 * 2^3
  • 所以:s = 0,M = 1.001 ,E = 3

 

 对于有效数字M和E的额外规定:

  • 因为M总是写成1.XXX , 1被省去,多一个精度,拿出来的时候补上1
  • 对于指数E:E是个无符号整数,由于科学计数法可能有负数,所以E填入内存时加上一个中间数。对于float+127,对于double+1023
  • 对于E从右往左,对于M从左往右。也就是E左边补0,M右边补0

 

3.指数E从内存中取出三种情况

E不为全0或者全1:

  • E减去127(或者1023)得到E的真实值。
  • M补上1.XX

E为全0:

  • 真实的E是-127,说明原来的数字超级小
  • 直接规定:E等于1-127(或者1-1023),有效M不再加一,还原为0.XX。
  • 这样做是为了表示+- 0 ,以及接近 0 的很小的数字

E为全1:

  • 真实的E是128 , 几乎为+- 无穷大的数字,不作讨论

4.例题

  • 首先,9在内存中的补码

  •  float* 看待内存为float类型
  •  那么E为全 0 ,所以M不再补,E为1-127,还原为:(%f默认打印6位)

  • 将9.0浮点数放入内存中,二进制位 1001.0 
  • 科学计数法1.001 * 2 ^ 3 
  • s = 0,E = 3+127 = 130 ,M =  001

  •  而%d打印整数,n也是整数,认为内存中存储的是补码。最高位为0,所以为正数,补码等于原码,值为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风吹等浪起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值