二:浮点数的存储格式
2.1 IEEE floating point standard
上面我们说了,浮点数的小数点是不固定的,如果每个人都按照自己的爱好存储在电脑里,那不就乱套了吗?那么怎么在计算机中存储这种类型的数字呢?象这类古老的问题前人早都为我们做好了相应的规范,无规矩不成方圆吗。我们平时所说的浮点数的存储规范,就是由IEEE指定的,具体的规范文件是:IEEE Standard 754 for Binary Floating-Point Arithmetic。大家可以很容易的从网络上下载到这篇文档。
在c语言中,单精度(float)数据类型为32bits,具体的如下图所示:
整个32bits分三部分,即
Sign:符号位,1 bit,0为正,1为负;
Exponent(bias):指数部分,8 bits,存储格式为移码存储(后面还会说明),偏移量为127;
Mantissa(fraction):尾数部分。
对应的双精度(double)类型的格式为: