第五章 avr单片机浮点数运算程序设计

第五章 avr单片机浮点数运算程序设计

ID:14309098

大小:101.50 KB

页数:15页

时间:2018-07-27

第五章 avr单片机浮点数运算程序设计_第1页
第五章 avr单片机浮点数运算程序设计_第2页
第五章 avr单片机浮点数运算程序设计_第3页
第五章 avr单片机浮点数运算程序设计_第4页
第五章 avr单片机浮点数运算程序设计_第5页
资源描述:

《第五章 avr单片机浮点数运算程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第五章浮点数运算程序设计5.1四字节浮点格式进行数值运算时,采用定点数运算往往不能满足要求。例短整数(8位带符号数)表示数的范围为-128~+127;整数(16位带符号数)表示数的范围为-32768~+32767;长整数(32位带符号数)表示数的范围为-231~(231-1)。每增加或减少1个数字单位恒为1,这样在绝对值很小的时候,表示的数的精度就很低。为了满足数的范围和精度的要求,常采用浮点数的格式。二进制浮点数一般采用±M×2E的形式表示。其中M为尾数,是定点数(无符号数),±为数符,E为指数

2、。若用1位二进制数表示符号位,0为正,1为负;23位23位24位二进制数表示尾数0.100……0~0.111……18位二进制数表示指数,取-125~+128则表示数的范围就可以扩大为±(0.5×2-125~1.0×2128)即±(1.2×10-38~3.4×1038),精度为2-24即5.9×10-8。我们采用的IEEE提出的四字节浮点数标准,恰好能很好表示这个范围的浮点数,其格式为:数符尾数阶码31位3023220最高位(第31位)为数符位,0为正,1为负;低23位(0~22位)为尾数,实际尾数

3、为23位0.100……0~0.111……123位第23~30位这8位为阶码。由于指数取值范围为-125~+128,可正可负,为简单起见,阶码采用指数的移码,阶码=指数+$7E。这样阶码恒为正。阶码为0即浮点数为0(小于1.2×10-38);阶码为$78,指数为$78-$7E=-6;阶码为$88,指数为$88-$7E=10;阶码为$FF,指数为$ff-$7E=$81超出四字节浮点数的表示范围,表示溢出(即绝对值大于3.4*1038)。为了方便理解该符点数的格式,下面举几个实际例子。例:十进制数1=0

4、.5*21,数符为0;阶码为1+$7E=$7F;尾数0.5=0.100……0b,去掉最高位1,00……0(23位);四字节浮点数为0011111110……0b即为$3F800000例:0.5=0.5*20,数符为0;阶码为$7E;尾数去掉最高位1为0000……0b(23位);四字节浮点数为001111110000……0b即为$3F000000。例:-5=-101=-0.101*23数符为1;阶码为3+$7E=$81;尾数去掉最高位1为0100……0b(23位);四字节浮点数为11000000101

5、00000……0b即为$C0A00000。5.2四字节浮点运算子程序库——AVR32FP.INC该浮点运算子程序主要有最基本的数值计算(加、减、乘、除运算)和整数到浮点、浮点到整数的转换。该浮点运算子程序库占353个字。共使用寄存器16个并使用了SRAM五个字节。注意:调用加减乘除子程序前必须将Y寄存器置初值,使用的SRAM五个字节的地址为Y-5、Y-4、Y-3、Y-2、Y-1。且应使这五个字节与堆栈区和SRAM其它工作区不要重复。浮点运算子程序库中包含以下八个子程序:INT2FP—16位整数转换

6、成四字节浮点数运算子程LONG2FP—32位长整数转换成四字节浮点数运算子程FP2INT—四字节浮点数转换成16位整数运算子程FP2LONG—四字节浮点数转换成32位长整数运算子程ADD32F—四字节浮点加法运算子程SUB32F—四字节浮点减法运算子程15DIV32F—四字节浮点除法运算子程MPY32F—四字节浮点乘法运算子程由于这八个浮点子程序都是常用的。所以将这些子程序编写在一块,各有自己的入口,又有一些共同的程序段。这样编写可以节省程序存储单元,浮点程序库总共只占353个字,还不到AT90S

7、8535内部Flash的十分之一,一般不至于影响存放用户程序。以下简单介绍一下各浮点子程序的程序思想:1.定点长整数(或整数)转换成浮点数:若为整数先将其转换成长整数(正数高16位添0,负数高16位添1);取出符号位及绝对值(正数绝对值不变,负数绝对值取补);将31位绝对值左移至最高位为1,其后23位数即为浮点数尾数(不足23位用0补足);浮点数的阶码为$9d减去左移次数。2.浮点数取长整(或取整):先判断阶码是否小于$7f,若小于$7f则结果为0;再看阶码是否大于$9d(或$8d),若大于则溢出

8、,正数取$7fffffff(或$7fff),负数取$80000000(或$8000);否则尾数最高位补1,右移24位尾数($96-阶码)次,即可求得尾数绝对值;取补即得到长整数(或整数)。注:($96-阶码)为负时为低位补0次数。3.浮点加减法运算:减法可对减数改变符号作加法运算;如一个加数为零或两数的阶码值相差大于尾数长度(24位),则可忽略较小的加数,之和取较大的加数;作加法运算前先对阶,小阶对大阶,较小的数尾数右移阶码之差次;尾数作加法运算;结果再浮点规格化,转化成24位尾数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。