首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

浮点数格式及与十进制数的转换和程序设计方法-3

浮点数格式及与十进制数的转换和程序设计方法-3

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公司提供的现成子程序实现十进制整数与二进制整数的相互转换,十进制小数与二进制小数的相互转换。
返回列表