技术支持Microchip产品专区Microchip产品应用技术 [分享]一些应用程序/算法/子程!!(供参考)

2  /  4  页   1234 跳转 查看:100074

[分享]一些应用程序/算法/子程!!(供参考)

re:这些太简意了能不能来点模糊控制的理伦和实...

 

[分享]PIC单片机的浮点数及其与十进制数之间的相互转换(供参考)

浮点数的格式

Microchip公司所采用的浮点数格式是IEEE-754标准的变异型。32位浮点数格式为:

                  (见附件)

其中:×表示一位二进制数0或1;eb 为指数的偏差;S为浮点数的符号位,S=0为正数,S=1为负数;小数点“·”在符号位S的右边;BY0 BY1 BY2为尾数的小数部分。

    应特别注意:

    ⑴ 浮点数隐含其整数部分为1。
    ⑵ 十进制数0 的浮点数表示为00H,00H, 00H, 00H。

2 浮点数与十进制数之间的相互转换

2.1 十进制数转换成浮点数

    设:十进数为A,则2Z=A,Z= lnA/ln2,指数P=int(z);尾数部分X: X=A/2P, 其整数部分隐含为1(零除外),将其小数部分按原码格式化为二进制数,即为尾数的小数部分BY0 BY1 BY2。而指数偏差eb=P+7FH(其中的7FH 为指数的偏移量)。符号位S,视十进制数的正负而确定。

    例如十进制数50.265化为32位规格化浮点数:A=50.265,则Z=ln50.265/ln2,P=int(Z),故P=5; X=A/2P=50.265/25=1.57078125,将0.57078125化为23位二进制小数,即是BY0 BY1 BY2,在最高位添上十进制数的符号位S(因十进制数为正数,故S=0);而eb=P+7FH,所以,十进制数50.265的32位规格化浮点数即为84H,49H,0FH,5CH。

2.2 浮点数转换为十进制数

    设浮点数为 eb S.BY0 BY1 BY2。由于浮点数隐含尾数的整数为1,故尾数X的实际值为:

      BY0 BY1 BY2;指数P=eb-7FH;故:十进制数

                A=(-1)S×2P×X

    例:32位规格化浮点数84H,49H,0FH,5CH转换为十进制数。

    符号位S=0;指数P=84H-7FH,故P=5; 尾数的小数部分为49H,0FH,5CH左移一位,而尾数的整数部分隐含为1,故尾数X的实际值为:1.57078123;十进制数A=(-1)0×25×1.57078123,即A=50.265。

3 浮点数与十进制数相互转换的程序设计

3.1 浮点数转换为十进制数的程序设计

    (1)检测浮点数是否为零;若为零,则十进制数整数部分和小数部分均为零。

    (2)保存浮点数的符号位,将浮点数隐含的1置于浮点数的符号位,指数偏差eb加1,小数点移到原浮点数的符号位之前。

    (3)判断指数偏差大于7FH否?若小于等于7FH,则该进制数整数部分为零,浮点数尾数部分右移n次(注:n=7FH-指数偏差eb), 即求得二进制小数部分。若大于7FH,则将小数点右移n’次(注:n’=指数偏差eb-7FH),即求得二进制整数部分和小数部分。

    (4)将二进制整数部分转换为十进制整数 ;将二进制小数部分转换为十进制小数。至此,完成了浮点数到十进制数的转换。

3.2 十进制数转换为浮点数的程序设计

    (1)检测十进制数是否为零,若为零,则浮点数置成00H,00H,00H,00H。

    (2)保存十进制数的符号位,将十进制数的整数部分转换为二进制整数,将十进制数的小数部分转换为二进制小数(设二进制整数为三个字节,二进制小数为两个字节)。

    (3)将浮点数的指数偏差eb置为7FH+23,检测二进制整数的最高位是否为1,不是,则将二进制整数和二进制小数联合左移,左移一次,指数偏差减1,直至二进制整数的最高位为1;隐含尾数整数的1,将二进制整数的最高位改为数的符号位。至此,指数偏差eb单元及原二进制整数的三个单元中的内容,即构成四字节浮点数。

    本文所述32位浮点数,精度相当于7位十进制数;32位浮点数运算程序在Microchip 公司提供的有关资料中均有,但是,在调试其浮点子程序时,发现0减0的结果为00H,80H, 00H,00H,而不是00H,00H,00H,00H,编程时应注意。

[IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA][IMGA][/IMGA]
[img]http://www.burnon.com/forum/images/fileType/gif.gif[/img]此主题相关图片
[img]http://www.burnon.com/forum/images/upload/2004/06/23/092139.gif[/img]
 

re:有没有控制,通信方面的资料啊~?

 

To liangxd

 

请问liangxd先生

 

re:这么多,辛苦了楼主!

欢迎光临电子信息资源网
http://www.lanyi.cn/
欢迎参与,提出宝贵意见!
 

re:棒!可惜我还用不上,看来我接触到的还是太...

wangdar
 

re:好东东!!

欢迎大家光临 PIC单片机学习网
网站地址:http://www.pic16.com   http://pic16.com/pic16
单片机交流论坛:http://pic16.com/bbs
 

re:谢谢

 

re:好东西,先收藏。谢谢了。

 
2  /  4  页   1234 跳转

版权所有 贝能国际  Burnon国际  Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0468744 second(s) , 4 queries. 闽ICP备05003850号
返顶部