文章目录
前言
C语言浮点型数据在内存中的存储及取出、有关案例等的介绍
一、浮点型在内存中的存储
- 浮点型数据的范围是在 float.h 头文件中定义的。
- 整型的数据的范围是在 limits.h 头文件中定义的。
二、浮点数存储规则
-
浮点数的二进制位中,小数点后面数字的权重从2-1 ----> 2-2 ------>…等逐渐变化。
-
因此若表示5.5 则二进制表示方法位 101.1, 即为5.5。
-
但是,若表示5.6,101.11大于5.6, 101.101也大于5.6。
-
所以表示5.6 需要很多位0或1来凑,所以浮点数不能精确表示有些值,只能近似表示。
-
IEEE 754 规定
-
任何一个浮点数都可以表示成 -1S × M × 2E 。
-
S 若为0, 则为正数,若为1,则为负数
-
E指的是把M表示成科学计数法,小数点移动的位数, 类似于10进制科学计数法
-
M是一个 大于等于1并且小于 2 的数字
-
所以浮点数在内存中存储的是 S M E 相关的值
三、浮点数在内存中的存储(32位)float类型
- 最高位存储 S 即符号位
- 中间8位存储E的值
- E 是一个无符号整型的值,float类型范围为0 - 255,但是实际情况中E的值可能为负。
- 所以 标准规定,存入E的值时,用 E 的值 加 中间数来进行修正
- float 类型的中间数是 127.
- M 是有效数字在1 - 2 之间
- 但是存储时,只存储小数点后面的,不存储1,在使用时加上1即可。
四、浮点数在内存中的存储(64位)double类型
- 最高位存储 S 即符号位
- 中间11位存储E的值
- E 是一个无符号整型的值,double类型范围为0 - 2047,但是实际情况中E的值可能为负。
- 所以