- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二进制数转十进制优化算法的探讨
二进制数转十进制优化算法的探讨
文章编号:2095-6835(2016)07-0094-02
摘 要:叙述了数制转换的基本方法,说明了二进制数转十进制算法的基本思路,并提出了一种优化算法,解决了传统算法中运行效率低的问题。另外,还详细分析了优化算法的实现方法,通过比较测试数据展现出这种算法的优越性。
关键词:二进制;十进制;优化算法;运行效率
中图分类号:TP332.2 文献标识码:A DOI:10.15913/j.cnki.kjycx.2016.07.094
目前,二进制数被广泛应用于计算机系统中。在当前的自动化控制系统中,无不以二进制数为核心。在数据采集、传输、交换、运算、录入和输出等所有环节中,均使用二进制数。然而在现实生活中,信息交流大多使用的是十进制,因而在机器与人之间则涉及到了数制转换问题。随着处理器技术的不断发展,这些数制转换早已不是问题。但是,在一些小型嵌入式系统中,通常将单片机作为主控处理器。因为其运算性能有限,如果需要频繁地转换数制,则会影响系统的正常运行。
本文简要探讨了基于MCS-51指令系统的微处理器作数据转换算法的相关内容,分析了二进制转十进制的思路,并提出了一种新算法。经过对比,结果表明,此算法具有较高的运行效率和较强的实用性。
1 二进制数转十进制的基本方法
二进制转十进制的基本方法是使用除法运算。以双字节的16位二进制整数为例,在C51编译器中将其定义为unsigned int数据类型,其取值范围为 0~65 535(十进制表示),或0x0000~0xffff(十六进制表示)。由此可见,其最大值占用十进制数的五位,分别为个、十、百、千、万位。在KEIL C51集成开发系统中,可以编写适当的C程序,实现二进制数到十进制数的转换。一个典型的例子如图1所示。
这是我们常用的一种方法,把待转换的16位二进制数x除以10 000,结果的整数部分即为十进制的万位,然后以x以10 000为模取余数,再除以1 000,得出结果的整数部分为十进制的千位,依次类推,即可算出百位、十位和个位。
这种算法的原理很简单,在此不再赘述。将这个程序用KEIL C51编译仿真运行,可以得到正确的运算结果,但是,,执行上面的代码程序所需的运行时间为994个时钟周期。经过相关分析可知,这一段程序中需要进行4次16位整数的除法和4次16位整数求余运算。标准的51内核单片机为8位机,其16位乘法、除法、求模运算的处理效率很低。在计算过程中,该程序段多次调用KEIL C51自带的16位除法运算库函数“C?UIDIV”,消耗了大量的MCU运行时间。
查看程序1不难发现,当执行语句“x=x% 100”后,x的取值必然小于100.因此,在最后两语句中,求十位和个位的运算不必采用unsigned int数据类型进行运算,可将其强制转换为unsigned char数据类型,以加快处理速度。标准MCS-51单片机内核支持8位乘/除法运算指令,可以高效地进行8位的乘/除法运算。程序1修改后如图2所示。
通过仿真运行可知,此次运行时间为959时钟周期,处理效率略有改善,但是,仍然没有明显提升。这是因为程序仍需要进行6次16位除法/求余运算。
因此,再变通一下,改变一下运算次序,先用x除以1 000,结果暂存于1个临时变量temp中,temp的值代表x包含多少个1 000.至此不难得出,temp取值范围为0~65,可以用1个unsigned char数据类型表示。如果对temp分别进行除10和求余运算,即可得出万位和千位数据。具体程序如图3所示。
程序3与程序2相比,减少了2次16位的除法/求余运算。由编译仿真测试结果可知,这一次运行时间减至666时钟周期。
由一系列的测试结果可知,程序耗时最多的是16位除法/求余的运算,而避免16位数据运算是提高运行效率的有效方法之一。仔细分析程序3可知,再减少16位运算的次数是难以实现的,要想进一步提高其效率,只能改变方式,运用其他算法达到提高效率的目的。
2 优化算法的研究
1个16位的二进制数可以拆解为两部分,即高6位和低10位。现在只考虑高6位部分,我们知道,210=1 024=1 K,这个“K”的单位比十进制数的“千”多了一点点,所以,可以近似认为“K”就是“千”。当1个16位的二进制数转换为用“K”作单位时,就可以近似得出它对应的十进制数中有几个“千”。将二进制数转换为用“K”表示的过程很简单,只需把16位的二进制数低10位截去,剩余的6位二进制数字就表示有多少个“K”。举例说明:
0b 000100 0000000000=4,096;
0b 100000 0000000000=32,768
您可能关注的文档
最近下载
- 中国法律体系课件.pptx VIP
- 光伏系统设计手册.pdf VIP
- 2013年水泥工业大气污染物排放标准.pdf VIP
- 中压蒸汽管线清洗方案.docx
- 第五单元第1课《树石小品》课件-2025-2026学年湘美版初中美术八年级上册.pptx VIP
- 第二单元《银屏乐声》第3课时《人世间》+《永志不忘》课件 人音版八年级音乐上册.pptx VIP
- 2024-2030年撰写:中国主焦煤项目风险评估报告.docx
- 兔子介绍幼儿园课件.pptx VIP
- 英语教学法-自然法-The-Natural-ApproachPPT课件.pptx VIP
- 初中数学教学课例《一次函数》课程思政核心素养教学设计及总结反思.doc VIP
原创力文档


文档评论(0)