在C语言中,浮点型数据按照IEEE 754标准在内存中存储。IEEE 754是计算机中用于表示浮点数的标准,它定义了浮点数的存储格式和一些基本的运算规则。以下是IEEE 754标准中定义的单精度(32位)和双精度(64位)浮点数的存储格式:
单精度(float,32位)
- 符号位(sign bit):1位
- 指数(exponent):8位
- 尾数(fraction/mantissa):23位
存储结构:
[符号位] [指数位] [尾数位]
[ 1位 ] [ 8位 ] [ 23位 ]
- 符号位:第1位表示正负,0代表正数,1代表负数。
- 指数位:接下来的8位用于存储指数,采用偏移量(或称为指数偏置)编码方式。对于单精度浮点数,偏移量是127。实际指数值是这8位表示的二进制数减去127。
- 尾数位:最后23位用于存储尾数,实际尾数是这23位加上一个隐含的前导1(对于规格化的数)。这个隐含的1不存储在内存中,但在计算数值时会考虑它。
双精度(double,64位)
- 符号位(sign bit):1位
- 指数(exponent):11位
- 尾数(fr