找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2792|回复: 9
收起左侧

关于单片机乘法除法执行效率问题

[复制链接]
ID:709761 发表于 2022-3-4 14:46 | 显示全部楼层 |阅读模式
是大数的除法  还是小数乘法耗时
60/(X*0.005)或者60000/(X*5)
回复

使用道具 举报

ID:807591 发表于 2022-3-4 15:03 | 显示全部楼层
自己仿真一下不就知道了
回复

使用道具 举报

ID:277550 发表于 2022-3-4 17:10 | 显示全部楼层
在数据类型范围内,整数会快过浮点。
回复

使用道具 举报

ID:883242 发表于 2022-3-4 22:42 | 显示全部楼层
X*0.005为什么不写成X/200?
回复

使用道具 举报

ID:709761 发表于 2022-3-5 08:02 | 显示全部楼层
Hephaestus 发表于 2022-3-4 22:42
X*0.005为什么不写成X/200?

好办法。能用移位代替吗
回复

使用道具 举报

ID:887371 发表于 2022-3-5 09:25 | 显示全部楼层
60000/5/X
常数要放一起,这样(60000/5)是由编译器计算,而不是由单片机计算,效率比60000/(X*5)高。
回复

使用道具 举报

ID:123289 发表于 2022-3-5 13:16 | 显示全部楼层
聪明一点的编译器,会先将常数项计算一个常数据,再继续编译的,即你怎么写,结果都一样。
除非编译器是较蠢的那一种,按写的次序编译。
回复

使用道具 举报

ID:709761 发表于 2022-3-5 14:48 | 显示全部楼层
datouyuan 发表于 2022-3-5 09:25
60000/5/X
常数要放一起,这样(60000/5)是由编译器计算,而不是由单片机计算,效率比60000/(X*5)高。

最后结果12000/X
回复

使用道具 举报

ID:687694 发表于 2022-3-7 20:57 | 显示全部楼层
这个问题是具有实际意义的,可以有效的理解单片机运算及编译器对代码的编译过程。但如果是因为乘法或者其他运算导致你的系统无法正常运行则应当考虑更换硬件平台,这是单片机开发的法则。
回复

使用道具 举报

ID:879809 发表于 2022-3-8 00:05 | 显示全部楼层
第一个涉及到浮点运算,肯定慢。第二个好一点的编译器都会优化成12000/X
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表