【C语言】浮点型在内存的存储
文章目录
- 一、浮点数存储规则
- 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语言】浮点型在内存的存储相关推荐
- 梦开始的地方 —— C语言数据在内存中的存储(整形+浮点型)
文章目录 整形在内存中的存储 1. 数值类型的基本分类 2. 整形在内存中的存储 1. 原码.反码.补码 2. 内存中为什么要存放补码? 3. 大小端存储 4. 无符号有符号数练习 5. 有符号数无符 ...
- C语言程序设计 | 整型、浮点型在内存中的存储方式
整型在内存中的存储 一个变量的创建要在内存中开辟空间,空间的大小是根据不同的类型决定的. 那数据在数据在所开辟的空间中是如何存储的呢? 首先我们要了解三个概念: 原码 反码 补码 计算机中的有符号数有 ...
- C语言--数据在内存中的存储
目录 一.数据类型详细介绍 1.数据类型介绍 2.数据类型基本归类 二.整形在内存中的存储:原码.反码.补码 三.大小端字节序介绍及其判断 练习题 四.浮点型在内存中的存储解析 一.数据类型详细介绍 ...
- java语言中的浮点型数据分为,Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou...
Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou 更多相关问题 [单选题]下列因素中不是经济中内在稳定器的是 [单选题]外在时滞是以下哪两 ...
- C语言负整数在内存中的存储
C语言负整数在内存中的存储 内存的存储 1)在电脑的内存中分为1byte = 8bit 每个bit中可以储存一个低电压或者是高电压 也就是0和1 2)正如下面所示1字节大小 3)控制保存3 C 变量占 ...
- c语言浮点型常量表示平均数_小白基础知识必备|| 整型常量与进制间的转换
一.C语言关键字 C语言的关键字共有32个,根据关键字的作用,可分为数据类型关键字.控制语句关键字.存储类型关键字和其它关键字四类. 数值类型关键字(12个) void.char.short.int. ...
- C语言 - 深度剖析数据的存储
文章目录 一.数据类型详细介绍 1.内置类型 2.类型的意义 3.类型的归类 1.整型家族 2.浮点型家族 3.构造类型(自定义类型) 4.指针类型 5.空类型 二.整型在内存中的存储 1.原码.反码 ...
- 人人都看得懂的C语言进阶系列之数据存储
数据在内存中的存储 一.数据类型 1.内置类型及意义 2.类型的基本分类 2.1.整型 2.2.浮点型 2.3.构造类型 2.4.指针类型 2.5.空类型 二.整型在内存中的存储 1.原码.反码.补码 ...
- 转:使用 PHP 直接在共享内存中存储数据集
概述 共享内存是一种在相同机器中的应用程序之间交换数据的有效方式.一个进程可创建一个可供其他进程访问的内存段,只要它分配了正确的权限.每个内存段拥有一个惟一的 ID(称为 shmid),这个 ID 指 ...
最新文章
- 推荐系统算法_机器学习和推荐系统(二)推荐算法简介
- 实体类,bean文件,pojo文件夹,model文件夹都一样
- 发布ccnet的步骤
- MANIFEST.MF文件全面解析
- Nginx负载均衡实现之四层与七层负载
- AngularJS-Hello World
- PostgreSQL11.7逻辑复制压测
- 科大讯飞语音识别芯片_科大讯飞造家电专用语音芯片 市场机会在哪里?
- CentOS下FastDFS+Nginx(单点部署)事例
- package.json在Node JS应用程序中的重要性
- Mac OS用Anaconda安装Jupyter Notebook
- Python 爬虫抓站 记录
- IndexError: Caught IndexError in DataLoader worker process 0.
- windows_帮助文档【.CHM电子书】打开显示空白解决办法
- E. Yet Another Array Counting Problem
- GitHub 标星 120K+!这些神器仅需一行代码即可下载全网视频!
- Effective C++条款粗略总结
- 【Vue 基础知识】keep-alive是什么?怎么用?
- JS实现视频录制-以Cesium为例
- 神经元的结构模型图片,神经元模型图片解析