專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

淺談C語言的一個算法

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2011年01月11日   【字體:

  周六與周日花費了兩天的時間得出一個轉(zhuǎn)復(fù)雜較為簡單的算法,其實都是學(xué)校里學(xué)過的,但由于沒有應(yīng)用于實際當(dāng)中。

  下面具體的來說說這個算法吧。

舉個例子,比如有這么一個一維數(shù)組,共有96個元素,我想分成32列,3行,又想分成16列6行,而且想要分別從行與列的頭開始取表元素,例tab[]={0x08,0xa0,.......,0xff};(可能你會想到分成多維數(shù)組,然后采用兩個for循環(huán),如for(int i=0;i<3;i++)

    {

    for(int j=0;j<32;j++)

      tab[i][j];  

    }

但還是不夠靈活)

  怎么樣靈活的改變呢?總不可能列兩個數(shù)據(jù)表吧?我苦思瞑想了兩天,找了老書。最終用了個移位的辦法。先是從它的數(shù)組表里取其元素量,再做移位與加減運算,

我做了個測試,其結(jié)果相當(dāng)?shù)暮谩R妶D


 

   這樣可以取表的大小,改變a,b,4,5,的值。來得到想要的結(jié)果。這個可以獨立成一個小的子程序。這個編譯出來的文件也相當(dāng)?shù)男,適用于元素表較大的選取。有時候語句短并不是什么優(yōu)勢(在單片機當(dāng)中)適合機器讀的語句才是好語然,2+2與2*2誰優(yōu)誰劣?機器曉得,相信,你懂的。。。。。。如果能省去循環(huán)語句占用MCU系統(tǒng)資源。呵呵,何樂而不為?
 

關(guān)閉窗口

相關(guān)文章