(2)浮点运算精度远高于此精度,所以最终结果保留3位小数是有意义的,再高就没意义了。
采用四字节浮点数运算对采集数据进行处理浮点数有各种各样的表示方法,为了统一浮点数的格式,IEEE提出一种浮点数标准。它有几种精度,其中包括单精度(4字节)、双精度(8字节)和扩展精度(10字节)。其中最常用的是单精度浮点数。但在编写运算程序时,IEEE标准的单精度浮点数有两个方面的问题:
(1) 阶码虽然为8位,但它的地址不为一个字节,运算寻址不太方便。
(2) 尾数为大于等于1小于2的混合小数,在执行乘法时不太方便,特别是不容易实现快速除法。
为了避免这两个问题,本文采用的是一种与IEEE标准的浮点数格式基本相同,但结构略有不同的四字节浮点数,格式如下:
该格式中,最高位为数符位,后面23位为尾数。由于该四字节浮点数必须为规格化数,所以除了零以外,尾数最高位总为1。为了节省存储空间,在存放时,采用IEEE标准的方式,不存放最高位的1。这样,23位尾数还需加上隐含的最高位1,构成一个定点原码24位小数,即尾数为小于1大于等于0.5的小数。最低8位为阶码,它采用移位,与IEEE标准相同,阶码等于实际阶码数值加上127。这种四字节浮点数的取值范围为:±(5.9×10-39~1.7×1038),精度为24位二进制数,即截断误差小于1/16777216。
单精度的浮点数运算的精度远高于80C196片上A/D转换的10位二进制数,足可以满足要求。
由于A/D转换结果的低位寄存器只用了高两位,为了方便存储,用两个字节存储。高字节存高8位,低字节只用高两位来存放转换结果的最后两位,低字节的后6位置零。