1. 浮点型的原理介绍及在内存中的存储形式
C语言提供了浮点数据类型,单精度浮点数float和双精度浮点数double。浮点数属于不精确的数据类型,本文将通过float类型的原理和在内存中的存储形式来介绍浮点型不精确的原因。以float类型为例,来展示C语言中浮点型的神秘之处。
2. float类型介绍
float是C语言的基本数据类型中的一种,表示单精度浮点数。C语言规定单精度浮点型在内存占用4个字节,精度为7位,依据IEEE规定 :float在存储中都分为三个部分:
- 符号位(Sign) : 0代表正,1代表为负;
- 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储;
- 尾数部分(Mantissa):尾数部分;
其中float和double的存储方式如下图所示:
数据类型 | 符号位 | 指数 | 尾数 |
---|---|---|---|
float | 1bit | 8bit | 23bit |
double | 1bit | 11bit | 52bit |