淺談C語(yǔ)言的一個(gè)算法
下面具體的來(lái)說(shuō)說(shuō)這個(gè)算法吧。
舉個(gè)例子,比如有這么一個(gè)一維數(shù)組,共有96個(gè)元素,我想分成32列,3行,又想分成16列6行,而且想要分別從行與列的頭開(kāi)始取表元素,例tab[]={0x08,0xa0,.......,0xff};(可能你會(huì)想到分成多維數(shù)組,然后采用兩個(gè)for循環(huán),如for(int i=0;i3;i++)
{
for(int j=0;j32;j++)
tab[i][j];
}
但還是不夠靈活)
怎么樣靈活的改變呢?總不可能列兩個(gè)數(shù)據(jù)表吧?我苦思瞑想了兩天,找了老書(shū)。最終用了個(gè)移位的辦法。先是從它的數(shù)組表里取其元素量,再做移位與加減運(yùn)算,
我做了個(gè)測(cè)試,其結(jié)果相當(dāng)?shù)暮?。?jiàn)圖
這樣可以取表的大小,改變a,b,4,5,的值。來(lái)得到想要的結(jié)果。這個(gè)可以獨(dú)立成一個(gè)小的子程序。這個(gè)編譯出來(lái)的文件也相當(dāng)?shù)男?,適用于元素表較大的選取。有時(shí)候語(yǔ)句短并不是什么優(yōu)勢(shì)(在單片機(jī)當(dāng)中)適合機(jī)器讀的語(yǔ)句才是好語(yǔ)然,2+2與2*2誰(shuí)優(yōu)誰(shuí)劣?機(jī)器曉得,相信,你懂的。。。。。。如果能省去循環(huán)語(yǔ)句占用MCU系統(tǒng)資源。呵呵,何樂(lè)而不為?
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評(píng)論