取整和取余数大家有什么好的方法?

2020-01-01 17:44发布

本帖最后由 xurenhui 于 2017-1-4 16:21 编辑

1.芯片是STM8S003K3
2.编译软件是IAR 6.3.16版本
3.如:Timer_Suffer[1] = Get_value/1000;//取整数 ---------------该方法大概占用12个字节,采用高级优化
         Timer_Suffer[2] = Get_value%100%10;//------------------该方法占用16个字节,采用高级优化
4.有什么简单点算法,使占用flash小一点,运算速度慢一点都没有关系,感觉自己种方法太笨拙了。
5.现在发现空间不够,所以希望大家给点建议,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
37条回答
laujc
1楼-- · 2020-01-05 08:20
这样试试:
n=Get_value;
for(i=0;i<4;i++)
{
Timer_Suffer[3-i]=n%10;
n=n/10;
}
laujc
2楼-- · 2020-01-05 12:39
lcw_swust 发表于 2017-1-5 11:34
这样试试:
n=Get_value;
for(i=0;i

你好,谢谢你提供的方法,
这个方法还多一个字节
lcw_swust
3楼-- · 2020-01-05 16:43
laujc 发表于 2017-1-5 10:53
你实际验证一下代码是否减小,我没有去验证。

不一样,中间执行了一次 temp/=10; ...

你好,测试一下,编译的代码比我以前还多18个字节
xurenhui
4楼-- · 2020-01-05 19:58
 精彩回答 2  元偷偷看……
xurenhui
5楼-- · 2020-01-06 01:41
XA144F 发表于 2017-1-5 20:59
假设让a除以1000,那就这样。
while(a>999){a-1000;b++;}
执行后b得到商,a得到余数,这样简单吧? ...

呵呵,这样是简单,但是有点问题,
假如是Get_Value = 899;
Get_Value = 799;
Get_Value = 699;
Get_Value = 599;
Get_Value = 499;
等等依次类推,那还不是有很多条件判断啊
XA144F
6楼-- · 2020-01-06 02:51
方向搞错了吧,FLASH空间不够,哪有这么优化的

一般都是优化缓存数据size或者栈

一周热门 更多>