不知道大家在写C语言的时候有没有好奇过,浮点型的数据在内存中是如何存储的呢?
我们可能只知道在32位平台下,float类型占四个字节,double类型占八个字节,像下图一样。
浮点数是怎么存放的呢?
相比于整型和字符型而言,浮点型的存储要复杂一点。
对于浮点型的存储标准,根据国际标准IEEE(电气电子工程师学会)754的定义:
任何一个浮点数都可以写成 (-1)^S*M*2^E其中
- (-1)^S表示符号位,S=0 为正数 ,S=1 为负数;
- M表示有效的数字,1 <= M < 2;
- 2^E表示指数位
看不懂没关系,举个例子:
- 5.0 = 101.0 = 1.01*2^2
5.0这个浮点数写成二进制的形式是 101.0 再将 101.0 转换成科学计数法 就是 1.01*2^2
而