最近开始看数值分析的书籍,在此做些笔记!
本节介绍一个关于浮点数的计算机计算模型IEEE 754浮点标准。IEEE(电器和电子工程师协会)对于建立行业标准有着积极的兴趣,他们的浮点运算格式已经成为整个计算机行业中单精度和双精度运算的共同标准。
当使用有限精度的计算机存储单元来表示无限精度的实数时,舍入误差是不可避免的。尽管我们希望在很长的运算中产生的小误差对答案只会产生很小的影响,但是在很多情形下这事实上是一种一厢情愿的想法。
1.浮点格式
IEEE标准包含一组实数的二进制表示法。浮点数由三部分组成,即符号(sign,+或-)、尾数(mantissa,它包含一串有效数字)以及阶(即指数,exponent)。这三部分合一起就表示计算机中的浮点数。
浮点数由三种常用的精度等级,即单精度,双精度,加长精度。浮点数在这三种格式里的位数分别是32,64,80,每部分中位数的划分如下表:
精度 | 符号 | 阶 | 尾数 |
---|---|---|---|
单 | 1 | 8 | 23 |
双 | 1 | 11 | 52 |
长双 | 1 | 15 | 64 |
当一个二进制数作为正规浮点数存储时最左边的1刚好位于小数点的左边,通过改变阶来调整移位。十进制9的二进制表示是1001,应该以这种形式存储。
我们只讨论双精度,其他类似。在由许多C编译程序和MatlAB使用的双精度中,M=11,N=52.
这是双精度1等于尾数0有52位。下一个比1大的浮点数等于或者是