4289|5

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用什么方法提取一个整数的各位 [复制链接]

请教一下大家,用什么办法能把一个六位的整数的各个位提取出来放到数组里,比如六位数246358,要把各个位2、4、6、3、5、8放到数组中去,算法里不要有乘法、除法和求余运算,430算乘除慢的吓人。硬件乘法器不能算除法和小数乘除。

最新回复

给你一个查表的二进制转BCD码算法,根据你的要求可以适当修改,也许有用 static unsigned int adtab[10]={0x256,0x128,0x64,0x32,0x16,0x8,0x4,0x2,0x1}; j=0; //十位二进制转bcd码hum为百位,ten为十位,rem为个位,采用移位查表法,   for(int i=0;i<9;i++)   {     if(deg&0x0100)     {       unsigned int tr;       tr=adtab[j]&0x0F00;       tr=tr>>8;       hum=hum+tr;        tr=adtab[j]&0x00F0;        tr=tr>>4;       ten=ten+tr;             rem=rem+(adtab[j]&0x000F);           }      if(rem>=0x0A)       {         rem=rem-0x0A;         ten++;       }       if(ten>=0x0A)       {         ten=ten-0x0A;         hum++;       }     deg=deg<<1;     j++;   }  详情 回复 发表于 2009-5-13 16:22
 
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
…………除1000,然后除100,依次类推
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不除法的话 你可以使用减法 不过效率上应该提高不了

246358-100000>0 1
146358-100000>0 1+1=2
46358-100000<0 十万位:2
下面求万位
46358-10000>0

最坏可能计算9+9+9+9+9+1 次减法比较
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
你这个减法比较的方法我试过了 要比除法 求余节省很多时间,主要是430算一个除法+求余要用906个周期,太慢了 这个虽然快但是程序真是长啊~~呵呵 总之谢谢了。

unsigned long data=246375;

if(data>=200000){bit[5]=2;data-=200000;}
if((data<200000)&&(data>=100000)){bit[5]=1;data-=100000;}

if((data<100000)&&(data>=90000)){bit[4]=9;data-=90000;}
if((data<90000)&&(data>=80000)){bit[4]=8;data-=80000;}
if((data<80000)&&(data>=70000)){bit[4]=7;data-=70000;}
if((data<70000)&&(data>=60000)){bit[4]=6;data-=60000;}
if((data<60000)&&(data>=50000)){bit[4]=5;data-=50000;}
if((data<50000)&&(data>=40000)){bit[4]=4;data-=40000;}
if((data<40000)&&(data>=30000)){bit[4]=3;data-=30000;}
if((data<30000)&&(data>=20000)){bit[4]=2;data-=20000;}
if((data<20000)&&(data>=10000)){bit[4]=1;data-=10000;}

if((data<10000)&&(data>=9000)){bit[3]=9;data-=9000;}
if((data<9000)&&(data>=8000)){bit[3]=8;data-=8000;}
if((data<8000)&&(data>=7000)){bit[3]=7;data-=7000;}
if((data<7000)&&(data>=6000)){bit[3]=6;data-=6000;}
if((data<6000)&&(data>=5000)){bit[3]=5;data-=5000;}
if((data<5000)&&(data>=4000)){bit[3]=4;data-=4000;}
if((data<4000)&&(data>=3000)){bit[3]=3;data-=3000;}
if((data<3000)&&(data>=2000)){bit[3]=2;data-=2000;}
if((data<2000)&&(data>=1000)){bit[3]=1;data-=1000;}

if((data<1000)&&(data>=900)){bit[2]=9;data-=900;}
if((data<900)&&(data>=800)){bit[2]=8;data-=800;}
if((data<800)&&(data>=700)){bit[2]=7;data-=700;}
if((data<700)&&(data>=600)){bit[2]=6;data-=600;}
if((data<600)&&(data>=500)){bit[2]=5;data-=500;}
if((data<500)&&(data>=400)){bit[2]=4;data-=400;}
if((data<400)&&(data>=300)){bit[2]=3;data-=300;}
if((data<300)&&(data>=200)){bit[2]=2;data-=200;}
if((data<200)&&(data>=100)){bit[2]=1;data-=100;}

if((data<100)&&(data>=90)){bit[1]=9;data-=90;}
if((data<90)&&(data>=80)){bit[1]=8;data-=80;}
if((data<80)&&(data>=70)){bit[1]=7;data-=70;}
if((data<70)&&(data>=60)){bit[1]=6;data-=60;}
if((data<60)&&(data>=50)){bit[1]=5;data-=50;}
if((data<50)&&(data>=40)){bit[1]=4;data-=40;}
if((data<40)&&(data>=30)){bit[1]=3;data-=30;}
if((data<30)&&(data>=20)){bit[1]=2;data-=20;}
if((data<20)&&(data>=10)){bit[1]=1;data-=10;}

if(data<10){bit[0]=data;}



PS: 难道430就没法算除法和求余么....
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
右移位,是不是适合你。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
给你一个查表的二进制转BCD码算法,根据你的要求可以适当修改,也许有用
static unsigned int adtab[10]={0x256,0x128,0x64,0x32,0x16,0x8,0x4,0x2,0x1};
j=0;
//十位二进制转bcd码hum为百位,ten为十位,rem为个位,采用移位查表法,
for(int i=0;i<9;i++)
{
if(deg&0x0100)
{
unsigned int tr;
tr=adtab[j]&0x0F00;
tr=tr>>8;
hum=hum+tr;
tr=adtab[j]&0x00F0;
tr=tr>>4;
ten=ten+tr;

rem=rem+(adtab[j]&0x000F);

}
if(rem>=0x0A)
{
rem=rem-0x0A;
ten++;
}
if(ten>=0x0A)
{
ten=ten-0x0A;
hum++;
}
deg=deg<<1;
j++;
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表