求一个分离(个、十、百、千、万)位的好算法

[复制链接]
21693|84
YINGZEZIGA 发表于 2010-7-19 11:39 | 显示全部楼层
想方设法搞好需求,快速满足市场变化才是最重要的啊。我参与过那么多项目,很少看到有兄弟把单片机的潜力全部都用到的,基本上都是杀**用牛刀。人家老外用8051做的东西我们用ARM做还觉得不够使,动不动就说管脚不够用,频率不够快。
hechuang200510 发表于 2010-7-24 17:06 | 显示全部楼层
MARK。。。
7楼可以。。。。
carrie0338 发表于 2010-8-6 10:51 | 显示全部楼层
7楼的不错。
zhanghzhan 发表于 2010-8-9 11:32 | 显示全部楼层
用ICC 7.3编译试了下。发现7楼的那个反汇编代码量打过了直接用除法的。
不知道是不是ICC 自身对除法优化处理得比较好
btzhy 发表于 2010-8-9 12:11 | 显示全部楼层
unsigned int i_tmp;
char s_tmp[10];

i_tmp = (unsigned int)TempA * 256 + (unsigned int)TempB;
sprintf(s_tmp, "%05d", i_tmp);
temp5 = s_tmp[0]-'0';
temp4 = s_tmp[1]-'0';
temp3 = s_tmp[2]-'0';
temp2 = s_tmp[3]-'0';
temp1 = s_tmp[4]-'0';
jtboy105 发表于 2010-8-30 16:00 | 显示全部楼层
mark,good,7楼的好
linjing 发表于 2010-8-30 19:24 | 显示全部楼层
秀一下我的算法及思路

if ( tempA & 0x80 ){
  temp[1..5] = 32767;
} else {
  temp[1..5] = 00000;
}

if ( tempA & 0x40 ){
  temp[1..5] += 16384;
  具体点:
  temp[1]+=4; if (temp[1] >= 10 ){ temp[1]-=10; temp[2]++; }
  temp[2]+=8; if (temp[2] >= 10 ){ temp[2]-=10; temp[3]++; }
。。。
}


思路倒是不复杂,测试每一位的权重,加到结果里面去,这个肯定都是单字节的操作,
就是不知道效率比之前面的算法如何了
ocon 发表于 2010-8-31 00:32 | 显示全部楼层
我一直用这个,思路清晰,位数扩展容易,对一般的应用足够了:
//int32到ASCII码的转换
void int32_to_ascii(int32 counter, int8 * asc8) {
    const int32 c[8]={10000000,1000000,100000,10000,1000,100,10,1};
    int8 i;
    int16 k;
    for(i=0;i<8;i++){   
        k=0;
        while(counter>=c[i]){
            counter-=c[i];
            ++k;
        }
        asc8[i]= k+0x30;
    }
}
dong_abc 发表于 2010-8-31 10:10 | 显示全部楼层
NJZR 发表于 2010-9-1 11:55 | 显示全部楼层
典型的两字节整数转换BCD码,满世界都有例程,不过是汇编的
machunshui 发表于 2010-9-1 14:08 | 显示全部楼层
一句话,
把有限的人生精力放在这种没用的地方,
实在浪费生命
hjl2832 发表于 2010-9-3 22:05 | 显示全部楼层
好贴,长见识了!
jdylyn 发表于 2010-9-4 14:28 | 显示全部楼层
itelectron 发表于 2010-9-4 20:25 | 显示全部楼层
perfectlife 发表于 2010-9-6 17:33 | 显示全部楼层
7楼的不错
ljm810010 发表于 2010-9-6 19:49 | 显示全部楼层
zx4798 发表于 2010-10-25 00:16 | 显示全部楼层
tempB+=(~0x64)+1是做什么,求指教
zx4798 发表于 2010-10-25 00:18 | 显示全部楼层
为什么是Var》=60000,40000,20000,10000,求指教,多谢
andyding 发表于 2010-10-28 18:48 | 显示全部楼层
%  也可以啊!
hoko964247736 发表于 2011-9-6 23:43 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部