本文简述计算机中浮点数的存储方式,以便查阅。内容来自Wikipedia。(http://en.wikipedia.org/wiki/IEEE_754-1985)
IEEE 754-1985 使用二进制表示数字,提供了四种精度,常用的两种是single precision和double precision,即单精度和双精度。另外它还提供了正负无穷、负零和五种异常结果的标准。
IEEE 754-1985 存储浮点数时,将存储空间分成三个部分,从最低位到最高位的顺序依次是:fraction、exponent、sign。其中sign占一个bit。
注解:
1. sign位为0时,代表正数;sign位为1时,代表负数。
2. exponent部分使用的是所谓的biased exponent。即实际存储的数字是我们想表示的数字再加上一个常数,这个常数是[2^(e-1)-1]。它的作用是使得负指数也表示成了一个正数,方便计算机对不同浮点数进行大小比较。
3. 存在所谓”规约形式“和”非规约形式“。
4. 尾数的整数部分在”非规约形式“中默认为0,其他情况默认为1。这部分不进行存储,所以实际上只存储小数部分,即fraction。
特殊值:
1. 如果exponent为0,fraction为0,该数为+/-0。正负依赖于符号位。
2. 如果exponent达到最大,fraction为0,该数为+/-无穷。正负依赖于符号位。
3. 如果exponent达到最大,fraction非零,该数不是一个数(NaN)。NaN即Not a Number。
浮点数的舍入:
有四种舍入方式,默认的是舍入到最接近的数,当和左右一样接近时,取偶数。