本篇继续上一篇,进行浮点数的介绍,浮点数的表示并不像整型那样简单,其在计算机中的运算也会使用更多地时钟周期。我们都知道计算机并不能绝对正确的表示浮点数,都是在允许的精度范围内进行计算,这是由计算的信息表示方式(0和1)所决定的。所以,对于浮点数的误差,我们更应该谨慎和小心,这样才能够在编写的程序中避免可能的病态问题。
谈到浮点数,或许你能想到IEEE(读作“Eye-Triple-Eee”)754标准。这个标准的制定是从1976年开始由Intel赞助的,在8087设计的同时,8087是一种为8086处理器提供浮点支持的芯片。他们请Kahan作为顾问,帮助设计未来处理器浮点标准。并支持Kahan加入IEEE委员会,后来IEEE最终制定的标准非常接近于Kahan为Intel设计的标准。这样IEEE754标准也就诞生了。
1. 二进制小数
在理解浮点数之前我们先看下含有小数值的二进制数字。首先先看下我们所熟悉的十进制是如何来表示小数的,十进制表示法所使用的表示形式为:dmdm-1…d1d0.d-1d-2…d-n,其中每个十进制数di的取值为0~9,这个表示的数值d为:
类似的,我们考虑形如bmbm-1…..b1b0.b-1b-2…b-n-1b-n的表示法,其中每个二进制数字bi的取值为0或者1,这种表示方法表示的数b定义如下: