文章目录

  • 一、浮点数存储规则
    • 1.常见的浮点数
    • 2.存储规则
    • 例子
  • 二、练习题
    • 1.思考题
    • 2.程序题

一、浮点数存储规则

1.常见的浮点数

3.14159——普通

1E10——科学计数法形式

2.存储规则

根据IEEE754标准,任意一个二进制浮点数V可以表示成下边的形式:

(-1)^S*M*2^E

其中(-1)^S 表示符号位,S取1为负数,S取0位正数

M表示有效数字,大于等于1,小于2【由于二进制的原因,所以1<=M<2】

2^E表示指数位【计算机二进制存储模式,E是次方】

IEEE 754****规定:

对于32位的浮点数,最高的1位是符号位s,接着的8位指数E,剩下的23位有效数字M。——32=23+8+1

对于64位的浮点数,最高的1位是符号位S,接着的11位指数E,剩下的52位为有效数字M。——64=52+11+1

·由于M取值范围很小,所以存储时会将整数部分1和小数点.,在取出数据的时候再将他们添上,提升存储效率。

对于E需要注意两点——

①类型为无符号整数

如果E为8位,它的取值范围为0255;如果E为11位,它的取值范围为02047

所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023【并且以二进制形式存,这里就不需要考虑原反补什么了(但其实正数也不需要考虑这些计算,都是一毛一样的)】

比如说2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137

也就是27+23+2^0即1000 1001

②E是否全为0是否全为1

E不全为0或不全为1——正常值

E全为0——无穷小

E全为1——无穷大

OK,让我们来再来想一遍浮点数的存储规则到底是什么?

首先,浮点数表示规则为指数E的计算值减去127/1023得到,得到真实值,有效数字M前加上1.,S为0为正数,为1位负数;

其次,float型1个是符号位,8个是指数位,23个是有效位;double型1个符号位,11个指数位,52个有效位;

再然后,E全为0表示无穷小,全为1表示无穷大,E还是一个无符号整数,储存的时候还需要加上中间值127/1023【助记128(2的7次方)、1024(2的10次方)】

**最后,在此重申——表示形式为(-1)*S*M*2^E**

例子

1)5.0f----->101.0------->1.01*2^2

2)9.5f----->1001.1f----->1.0011*23【这里特别注意权重的问题,小数点一直向左权重分别为20,21,22……,小数点一直向右权重分别为2-1,2-2,2^-3……】

3)9.6f----->1001.100……不能准确渠道

二、练习题

1.思考题

为什么无法精确保存分数的值

浮点数的储存时的有效数字为是有限的,能够保存的位数总是有限的,所以无法精确保存。

2.程序题

int main()
{int n = 9;float *pFloat = (float *)&n;printf("n的值为:%d\n",n);printf("*pFloat的值为:%f\n",*pFloat);*pFloat = 9.0;printf("num的值为:%d\n",n);printf("*pFloat的值为:%f\n",*pFloat);return 0;
}

【C语言】浮点型在内存的存储相关推荐

  1. 梦开始的地方 —— C语言数据在内存中的存储(整形+浮点型)

    文章目录 整形在内存中的存储 1. 数值类型的基本分类 2. 整形在内存中的存储 1. 原码.反码.补码 2. 内存中为什么要存放补码? 3. 大小端存储 4. 无符号有符号数练习 5. 有符号数无符 ...

  2. C语言程序设计 | 整型、浮点型在内存中的存储方式

    整型在内存中的存储 一个变量的创建要在内存中开辟空间,空间的大小是根据不同的类型决定的. 那数据在数据在所开辟的空间中是如何存储的呢? 首先我们要了解三个概念: 原码 反码 补码 计算机中的有符号数有 ...

  3. C语言--数据在内存中的存储

    目录 一.数据类型详细介绍 1.数据类型介绍 2.数据类型基本归类 二.整形在内存中的存储:原码.反码.补码 三.大小端字节序介绍及其判断 练习题 四.浮点型在内存中的存储解析 一.数据类型详细介绍 ...

  4. java语言中的浮点型数据分为,Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou...

    Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou 更多相关问题 [单选题]下列因素中不是经济中内在稳定器的是 [单选题]外在时滞是以下哪两 ...

  5. C语言负整数在内存中的存储

    C语言负整数在内存中的存储 内存的存储 1)在电脑的内存中分为1byte = 8bit 每个bit中可以储存一个低电压或者是高电压 也就是0和1 2)正如下面所示1字节大小 3)控制保存3 C 变量占 ...

  6. c语言浮点型常量表示平均数_小白基础知识必备|| 整型常量与进制间的转换

    一.C语言关键字 C语言的关键字共有32个,根据关键字的作用,可分为数据类型关键字.控制语句关键字.存储类型关键字和其它关键字四类. 数值类型关键字(12个) void.char.short.int. ...

  7. C语言 - 深度剖析数据的存储

    文章目录 一.数据类型详细介绍 1.内置类型 2.类型的意义 3.类型的归类 1.整型家族 2.浮点型家族 3.构造类型(自定义类型) 4.指针类型 5.空类型 二.整型在内存中的存储 1.原码.反码 ...

  8. 人人都看得懂的C语言进阶系列之数据存储

    数据在内存中的存储 一.数据类型 1.内置类型及意义 2.类型的基本分类 2.1.整型 2.2.浮点型 2.3.构造类型 2.4.指针类型 2.5.空类型 二.整型在内存中的存储 1.原码.反码.补码 ...

  9. 转:使用 PHP 直接在共享内存中存储数据集

    概述 共享内存是一种在相同机器中的应用程序之间交换数据的有效方式.一个进程可创建一个可供其他进程访问的内存段,只要它分配了正确的权限.每个内存段拥有一个惟一的 ID(称为 shmid),这个 ID 指 ...

最新文章

  1. 推荐系统算法_机器学习和推荐系统(二)推荐算法简介
  2. 实体类,bean文件,pojo文件夹,model文件夹都一样
  3. 发布ccnet的步骤
  4. MANIFEST.MF文件全面解析
  5. Nginx负载均衡实现之四层与七层负载
  6. AngularJS-Hello World
  7. PostgreSQL11.7逻辑复制压测
  8. 科大讯飞语音识别芯片_科大讯飞造家电专用语音芯片 市场机会在哪里?
  9. CentOS下FastDFS+Nginx(单点部署)事例
  10. package.json在Node JS应用程序中的重要性
  11. Mac OS用Anaconda安装Jupyter Notebook
  12. Python 爬虫抓站 记录
  13. IndexError: Caught IndexError in DataLoader worker process 0.
  14. windows_帮助文档【.CHM电子书】打开显示空白解决办法
  15. E. Yet Another Array Counting Problem
  16. GitHub 标星 120K+!这些神器仅需一行代码即可下载全网视频!
  17. Effective C++条款粗略总结
  18. 【Vue 基础知识】keep-alive是什么?怎么用?
  19. JS实现视频录制-以Cesium为例
  20. 神经元的结构模型图片,神经元模型图片解析

热门文章

  1. 解锁网易云音乐小工具_什么?网易云音乐又变灰了
  2. 解决react项目启动invalid host header问题
  3. easyflow 流程图 节点自动布局
  4. 爬取网易云热门音乐歌单
  5. 电视剧《天道》里的商业思维
  6. 【行研资料】智能家居的未来(英文)——附下载
  7. 计算机正确的按键手法游戏,原神pc操作方法 基础按键与常见动作教程
  8. EtherCAT学习笔记:EEPROM存储内容结构(从站配置信息接口SII)
  9. 计算机小游戏有哪些,为你解答电脑小游戏有哪些
  10. linux光盘挂载详解,Linux系统下挂载光盘的教程