打印

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

[复制链接]
楼主: 一棵小草
手机看帖
扫描二维码
随时随地手机跟帖
61
YINGZEZIGA| | 2010-7-19 11:39 | 只看该作者 回帖奖励 |倒序浏览
想方设法搞好需求,快速满足市场变化才是最重要的啊。我参与过那么多项目,很少看到有兄弟把单片机的潜力全部都用到的,基本上都是杀**用牛刀。人家老外用8051做的东西我们用ARM做还觉得不够使,动不动就说管脚不够用,频率不够快。

使用特权

评论回复
62
hechuang200510| | 2010-7-24 17:06 | 只看该作者
MARK。。。
7楼可以。。。。

使用特权

评论回复
63
carrie0338| | 2010-8-6 10:51 | 只看该作者
7楼的不错。

使用特权

评论回复
64
zhanghzhan| | 2010-8-9 11:32 | 只看该作者
用ICC 7.3编译试了下。发现7楼的那个反汇编代码量打过了直接用除法的。
不知道是不是ICC 自身对除法优化处理得比较好

使用特权

评论回复
65
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';

使用特权

评论回复
66
jtboy105| | 2010-8-30 16:00 | 只看该作者
mark,good,7楼的好

使用特权

评论回复
67
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]++; }
。。。
}


思路倒是不复杂,测试每一位的权重,加到结果里面去,这个肯定都是单字节的操作,
就是不知道效率比之前面的算法如何了

使用特权

评论回复
68
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;
    }
}

使用特权

评论回复
69
dong_abc| | 2010-8-31 10:10 | 只看该作者
好!

使用特权

评论回复
70
NJZR| | 2010-9-1 11:55 | 只看该作者
典型的两字节整数转换BCD码,满世界都有例程,不过是汇编的

使用特权

评论回复
71
machunshui| | 2010-9-1 14:08 | 只看该作者
一句话,
把有限的人生精力放在这种没用的地方,
实在浪费生命

使用特权

评论回复
72
hjl2832| | 2010-9-3 22:05 | 只看该作者
好贴,长见识了!

使用特权

评论回复
73
jdylyn| | 2010-9-4 14:28 | 只看该作者
mark

使用特权

评论回复
74
itelectron| | 2010-9-4 20:25 | 只看该作者
好贴

使用特权

评论回复
75
perfectlife| | 2010-9-6 17:33 | 只看该作者
7楼的不错

使用特权

评论回复
76
ljm810010| | 2010-9-6 19:49 | 只看该作者
唉~

使用特权

评论回复
77
zx4798| | 2010-10-25 00:16 | 只看该作者
tempB+=(~0x64)+1是做什么,求指教

使用特权

评论回复
78
zx4798| | 2010-10-25 00:18 | 只看该作者
为什么是Var》=60000,40000,20000,10000,求指教,多谢

使用特权

评论回复
79
andyding| | 2010-10-28 18:48 | 只看该作者
%  也可以啊!

使用特权

评论回复
80
hoko964247736| | 2011-9-6 23:43 | 只看该作者
mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则