栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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,所以为正数,补码等于原码,值为

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号