历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | PIC单片机的浮点数及其与十进制数之间的相互转换

2019-10-17 来源:eefocus

在我们设计的仪表中采用PIC系列单片机,碰到了浮点数的运算问题,查阅其有关资料发现,其浮点数的格式及其与十进制数之间的转换,与我们常用的MCS-51单片机所提供的三字节、四字节浮点数完全不同,本文将说明其浮点数的格式及其与十进制数之间的转换和程序设计步骤。


1 浮点数的格式


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,编程时应注意。


4 结语


本文中的十进制数与浮点数之间相互转换的程序设计,在智能化仪表的键盘置数及数据显示中,具有实用价值。这里提出了一种设计思路,没有复杂的算法,程序设计亦较简单,工作量较少,可利用Microchip公司提供的现成子程序实现十进制整数与二进制整数的相互转换,十进制小数与二进制小数的相互转换。


参考文献


1 Microchip公司CD-ROM盘中的应用笔记,1997(2)

2 单片机软件设计技术. 科学技术文献出社,1988.7 


推荐阅读

史海拾趣

FDK AMERICA公司的发展小趣事

在竞争激烈的电子市场中,FDK AMERICA公司始终坚持品质至上的原则。公司严格控制产品质量,从原材料采购到生产流程再到售后服务,每一个环节都力求做到精益求精。这种对品质的执着追求赢得了客户的信赖,也为公司树立了良好的品牌形象。

大毅科技公司的发展小趣事

作为一家有社会责任感的企业,大毅科技始终关注环境保护和可持续发展。公司积极推行绿色生产理念,采用环保材料和节能技术,减少生产过程中的废弃物排放和能源消耗。同时,大毅科技还积极参与公益事业和社区活动,回馈社会。这些举措不仅体现了公司的社会责任感,也赢得了社会的广泛赞誉。

以上是关于大毅科技在电子行业中的5个发展故事概述。这些故事展示了大毅科技在创立、生产基地拓展、品质认证与国际化、技术创新与研发以及社会责任与可持续发展等方面的努力和成就。

Advanced Electronic Packaging公司的发展小趣事

在追求经济效益的同时,Advanced Electronic Packaging公司始终关注企业社会责任和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的能源消耗和环境污染。此外,公司还积极参与社会公益活动,为当地社区提供就业机会和培训支持。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

这些故事只是Advanced Electronic Packaging公司发展过程中的一部分,它们共同展现了公司在电子行业中的成长轨迹和取得的成就。未来,随着科技的不断进步和市场需求的不断变化,相信Advanced Electronic Packaging公司将继续保持创新精神,为电子行业的发展贡献更多力量。

Fascomp公司的发展小趣事

随着公司规模的扩大,Fascomp开始关注更广阔的市场。公司针对智能手机市场推出了一款低功耗、高性能的处理器,迅速在市场上获得了成功。同时,公司还不断推出新的产品线,如平板电脑专用芯片、物联网设备等,以满足不同客户的需求。这些创新举措使Fascomp在激烈的市场竞争中脱颖而出。

Advanced Interconnections Corp公司的发展小趣事

随着市场竞争的加剧,AIC公司意识到品质是赢得客户信赖的关键。于是,公司加大了对生产过程的管控力度,从原材料采购到生产流程,再到产品检验,都实行了严格的质量控制。同时,AIC公司还建立了完善的售后服务体系,及时响应客户需求,解决产品使用过程中出现的问题。这些举措使AIC公司的产品赢得了客户的广泛好评,进一步巩固了市场地位。

Curtis Industries公司的发展小趣事

随着电子行业的不断发展,Curtis Industries公司意识到技术创新的重要性。公司投入大量资源进行技术研发,成功推出了一系列具有行业领先水平的产品。其中,公司在某一关键领域的突破性技术,不仅解决了行业内的技术难题,还为公司赢得了广泛的赞誉。Curtis Industries因此成为了电子行业的技术创新引领者,推动了整个行业的发展。

问答坊 | AI 解惑

走出防电脑辐射的种种误区

很长一段时间以来,由射线防护品生产厂商们炒作的电磁辐射危害人类生存的浪潮愈演愈烈,引诱了很多日用品的生产者跟风,向消费者不断推销号称“世界领先科技”的防护用品,如:防电脑辐射的眼镜、手套、面罩、上衣、裤子、甚至孕妇专用的套装等等千 ...…

查看全部问答>

什么是汽车电子?

汽车电子简而言之就是半导体和汽车的结合,主要分为两类:一类是汽车电子控制装置,要和机械系统配合使用,例如电子燃油喷射系统、制动防抱死控制、防滑控制、悬架控制、动力转向等。另一类是车载汽车电子装置,是在汽车环境下能够独立使用的电子装 ...…

查看全部问答>

【藏书阁】电子线路与电子技术 /电器修理技术丛书

目录: 第1章 基础知识 第1节 基本概念 第2节 电子元器件主要特性和典型应用电路故障分析 第2章 音频放大器电路 第1节 晶体管单级放大器电路和电路故障分析 第2节 多级放大器电路及电路故障分析 第3节 放大器性能参数 第4节 音频功率放大 ...…

查看全部问答>

【藏书阁】微型计算机原理与汇编语言程序设计

第01章 微型计算机概述 38页.ppt 第02章 计算机中的数据表示 26页.ppt 第03章 80X86微处理器及其体系结构 33页.ppt 第04章 指令系统 134页.ppt 第05章 汇编语言的基本表达及其运行 28页.ppt 第06章 汇编语言程序设计 78页.ppt 第07章 中断调 ...…

查看全部问答>

求硬件开发的人才

高薪求人才! 职位描述及要求: 1. 生物医学工程、精密仪器、检测电子、电子信息工程等相关专业毕业 2、医疗工程系毕业的硕士优先考虑 2. 精通FPGA,单片机等硬件编程芯片的程序设计者优先考虑 3. 熟悉模拟电路、数字电路等sch设计及pcb设计 ...…

查看全部问答>

请教关于HALT模式

本人使用的不是低功耗的ST8芯片,在进入HALT后,用470uF的电容只能够记忆10S左右,但是我看说明书说进入HALT的电流是6ua,我把定时器,看门狗,内外部时钟都关掉,IO口置为输入,请问我是否有其他用电器需要关掉,谢谢.…

查看全部问答>

关于FLASH读写

                                 我现在FLASH能读,但是写不进去,也擦不了。对寄存器也是正确操作。…

查看全部问答>

关于P2IN

给P2.5输入0,程序如下 P2SEL &=~BIT5; P2IN    &=~BIT5; 结果编译出错,改成P2OUT &=~BIT5,没问题,但我一直理解的是P2OUT为输出的值,P2IN为输入的值,不知道这样理解对不对…

查看全部问答>

独立按键接法

小弟是刚开始学习的,按键触发不是有高低电平吗,我想知道独立按键的高电平触发电路接法和低电平触发电路接法.…

查看全部问答>