单片机c的加法为什么会比减法运算速度慢
答案:2 悬赏:20 手机版
解决时间 2021-12-02 06:01
- 提问者网友:孤山下
- 2021-12-01 08:51
单片机c的加法为什么会比减法运算速度慢
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-12-01 10:19
软件延时,用汇编语言编写的,是可以计算耗时时间的。
用C语言,不能确定编译系统究竟使用了什么存储器,所以不能准确的算出延时时间,只能用keil等软件,进行仿真,进行测试。
下面的式子中,如果SecondCnt 一个负数,在单片机中,是没有负数的概念的,如果减得-60的话,如果是16位单片机,
实际上-60是被表示为FFC4,实际上是65476,那样的话,实际上就和我们原来的意思相反,
而应该用?:运算符判断一下,如果不够减,取0;
应该改为if((cnt++ >= 5)||((SecondCnt>=LastSecondCnt?SecondCnt-LastSecondCnt:0+cnt)>6))
if((cnt++ >= 5)||((SecondCnt-LastSecondCnt+cnt)>6))
{
RebootCar();
}
用C语言,不能确定编译系统究竟使用了什么存储器,所以不能准确的算出延时时间,只能用keil等软件,进行仿真,进行测试。
下面的式子中,如果SecondCnt
实际上-60是被表示为FFC4,实际上是65476,那样的话,实际上就和我们原来的意思相反,
而应该用?:运算符判断一下,如果不够减,取0;
应该改为if((cnt++ >= 5)||((SecondCnt>=LastSecondCnt?SecondCnt-LastSecondCnt:0+cnt)>6))
if((cnt++ >= 5)||((SecondCnt-LastSecondCnt+cnt)>6))
{
RebootCar();
}
全部回答
- 1楼网友:未来江山和你
- 2021-12-01 11:44
加法减法是一样的,造成两个循环时间不同的原因,不是出在增减上,而是判断上。
两个for 的结束循环判断,第一个是跟50000比较,第二个是跟0比较,在汇编中,跟0比较是省时间的。
你要是看的懂汇编代码的话,你可以在编译出来LST文件中看看它们的不同。
两个for 的结束循环判断,第一个是跟50000比较,第二个是跟0比较,在汇编中,跟0比较是省时间的。
你要是看的懂汇编代码的话,你可以在编译出来LST文件中看看它们的不同。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯