这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 单片机C语言编写的程序,加法比减法运算速度慢吗?

共7条 1/1 1 跳转至

单片机C语言编写的程序,加法比减法运算速度慢吗?

助工
2011-03-28 17:18:02     打赏
AT89C52  的LED灯的闪烁、
代码如下:

#include<reg52.h>
sbit D1=P1^0;
void main()
{
unsigned int i;
while(1)
{
  for(i=0;i<50000;i++)
   D1=0;
  for(i=50000;i>0;i--)
   D1=1;
   
}
}

结果发现灯亮的时间比灭的时间要长,一般机器的运算不是以加法为基础的么,我以为应该是加法比减法速度快才对的,请高手赐教,难道是加法真的比减法运算速度慢吗?



关键词: 单片机     语言     写的     程序     加法     减法     运算     速度慢    

专家
2011-03-29 09:23:08     打赏
2楼
加法减法是一样的,造成两个循环时间不同的原因,不是出在增减上,而是判断上。
两个for 的结束循环判断,第一个是跟50000比较,第二个是跟0比较,在汇编中,跟0比较是省时间的。
看看汇编代码吧,你可以在编译出来LST文件中看看它们的不同。

高工
2011-03-29 11:39:26     打赏
3楼

原因在此呀,受教了,谢谢哈利波特,


高工
2011-03-31 15:09:07     打赏
4楼
果然是高手。

虽然我记得for循环中效率高的是递减循环,但一直不知道原因。

这下终于明白了

高工
2011-04-01 14:07:59     打赏
5楼

这么说,是不是i++和++i,速度也会有一点点的区别呢?


菜鸟
2011-04-01 17:31:58     打赏
6楼
厉害

高工
2011-04-07 15:48:19     打赏
7楼

有没有人测试过呢?


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]