摘要:一浮点型数据及其取值范围二浮点型数据在内存中的存储一小数的二进制十进制转二进制整数部分与整数原理相同,按照整数二进制转换的规则,写成对应的二进制数。全为表示浮点数的最大值或者最小值。
整数部分: 与整数原理相同,按照整数二进制转换的规则,写成对应的二进制数。
小数部分: 十进制小数转换成二进制小数采用乘2取整,顺序排列法。具体做法是:用2乘以十进制地小数,将积的整数部分取出,作为十分位,再用2乘以剩下的小数部分,再将积的整数部分取出作百分位,重复进行,直到达到要求的精度。
例如:将十进制1.8125转换成二进制
所以1.8125的二进制为1.1101。
把二进制数写成加权系数展开形式,按十进制的加法规则求和,即按权相加。
例如:将二进制数1.1101转换为十进制
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:
IEEE 754规定: 对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。
如图表示float型在内存中的存储:
S的存储较为简单,只有1和0两种情况:
对于float型,E共有个比特8位,可表示范围 0~255,存入数据时,加上中间数127,这样做可以便可以表示负数,所以实际可保存数据范围为[-127 ,128]。例如:101.1101科学计数法表示为(-1)^0 * 1.011101* 2^6,E为6,内存中放6+127=133的二进制序列,取出时同理减123即可。
在保存M时,默认这个数的第一位是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
IEEE 754规定:对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。
双精度浮点型与单精度浮点型存储原理基本类似,不再详细叙述,区别是
E全为0
E全为0时,浮点E的真实值为0-127(或者0-1023),表示一个接近于0的很小的浮点数,还原时有效数字M不加省略的1。
所以浮点数不能直接比较大小,要考虑进制转换时存在的误差,不能用’==’。
E全为1
表示浮点数的最大值或者最小值。
#include #include 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); system("pause"); return 0;}
整型9在内存中的存储:
若按float型取出打印,则解读为:
E为全0,所以printf("*pFloat的值为:%f/n", *pFloat)语句的结果为0.000000
浮点型9.0在内存中的存储:
这个二进制序列按整型打印时被解读为整型数据,将这个二进制序列直接转换为10进制即为打印结果:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122424.html
摘要:在符号位中,表示正,表示负。我们知道对于整型来说,内存中存放的是该数的补码。在计算机系统中,数值一律用补码来表示和存储。表示有效数字,。规定对于位的浮点数,最高的位是 ...
摘要:的理解和区别代表有符号,整数在内存中存储的二进制位的最高位为符号位,表示负数,表示正数。那接下来我们来学习数据在所开辟的内存空间时如何存储的。请看下面例子为什么内存中存储的是补码对于整数来说数据存放内存中其实存放的是补码。 ...
摘要:还不清楚原码反码补码的可以到语言从入门到入土操作符篇中的移位操作符处学习一下。比如原码反码补码原码显示值补码数据存放内存中其实存放的是补码补码的表示与存储在计算机系统中,数值一律用补码来表示和存储。 ...
摘要:数据的存储前言数据类型汇总整型家族浮点型家族自定义类型指针类型。整型家族注在之后的标准规定,将类型数据划分为整型家族,因为字符在内存中会将其转化为码值进行存储。 ...
摘要:所有这些类型,在内部统一用一个叫做的结构表示,在源代码中这个结构名称为。的具体定义在源代码的文件中,下面是相关代码的摘录。 【转】浅谈PHP5中垃圾回收算法(Garbage Collection)的演化 前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage C...
阅读 1081·2021-11-16 11:45
阅读 3083·2021-10-13 09:40
阅读 694·2019-08-26 13:45
阅读 1154·2019-08-26 13:32
阅读 2143·2019-08-26 13:23
阅读 878·2019-08-26 12:16
阅读 2805·2019-08-26 11:37
阅读 1728·2019-08-26 10:32