周六与周日花费了两天的时间得出一个转复杂较为简单的算法,其实都是学校里学过的,但由于没有应用于实际当中。
下面具体的来说说这个算法吧。
举个例子,比如有这么一个一维数组,共有96个元素,我想分成32列,3行,又想分成16列6行,而且想要分别从行与列的头开始取表元素,例tab[]={0x08,0xa0,.......,0xff};(可能你会想到分成多维数组,然后采用两个for循环,如for(int i=0;i<3;i++)
{
for(int j=0;j<32;j++)
tab[i][j];
}
但还是不够灵活)
怎么样灵活的改变呢?总不可能列两个数据表吧?我苦思瞑想了两天,找了老书。最终用了个移位的办法。先是从它的数组表里取其元素量,再做移位与加减运算,
我做了个测试,其结果相当的好。见图
这样可以取表的大小,改变a,b,4,5,的值。来得到想要的结果。这个可以独立成一个小的子程序。这个编译出来的文件也相当的小,适用于元素表较大的选取。有时候语句短并不是什么优势(在单片机当中)适合机器读的语句才是好语然,2+2与2*2谁优谁劣?机器晓得,相信,你懂的。。。。。。如果能省去循环语句占用系统资源。呵呵,何乐而不为?
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。