今天结合计算机组织与体系结构以及深入理解计算机系统这两本书,又系统地把浮点数给看了一遍。现在系统的把几个要点给总结一下:
1、浮点数的三个域:符号域,指数域和分数域。float和double对应的位数分别为:1,8,23和1,11,52
2、指数域是偏值形式的,也就是真正的指数+偏值才是指数域所表示的值。float和double的偏值分别是127和1023.由于8位和11位指数域对应的无符号数的值的范围分别是(0,255)和(0,2047),而除去特殊数的全0和全1指数域,则真正的指数取值范围分别是(-126,127)和(-1022,1023)
3、根据分数域的位数和隐含的基值1,我们可以推出float和double的分数域的取值范围分别是:(1,2-2^-23)以及相反数的值域。
4、指数域向上,全1的时候,如果分数域全0,那么可表示正无穷大和负无穷大。
指数域向上,全1的时候,如果分数域不全0,则表示NaN
指数向下,全0的时候,如果分数域全0,那么表示正0和负0
指数域向下,全0而分数域不为0的时候,表示非规格化数
5、由于2^-126和2^-125之间相差2^-126,而0和2^-126之间也相差2^-126,所以这两个区间的浮点数密集程度是一样的。