新聞中心

        EEPW首頁 > 嵌入式系統 > 牛人業話 > 嵌入式C語言里的土豪們之除法與移位

        嵌入式C語言里的土豪們之除法與移位

        作者:jobs 時間:2013-10-22 來源:電子產品世界 收藏

          這個詞用在接下來要出場的再合適不過了。他們在里占盡了奢華,但是畢竟我們更需要一個節約型的微生態環境。在這里簡單給大家分析一下編程時用到的

        本文引用地址:http://www.104case.com/article/182359.htm

          

          微處理器里可算是一個消耗大戶,復雜的實現方式不僅占用了大師寶貴的計算時間而且精度有限情況下占用了大片的RAM。因此,常常在各類文章里看到,編程人員應該使用右移運算來代替除法。這個右移方法沒有問題,也確實能提高微處理器的計算能力,節省處理時間。但是,我們必須要注意到,這種方式只適用于整數運算的2的倍數的除法,即除以2、4、8、16等數值?!氨M量使用右移來替代除法”這個說法,我是不贊成的。主要因為目前的編程環境都可以優化,像這種以2的倍數的除法,編譯器如果認為運算要好于除法,那么其就會自覺地編譯成為運算,而無須用戶干預。

          這里我們再假設一種情況:我們在進行一次數據采集處理,每組數據共16個,然后我們通過迭代的方式將這16個數據求和,然后,再右移4位(除以16)。可是,也許這里就為我們日后的更新程序埋一下了個重大隱患。恰巧我們求和的迭代次數是通過一個#define來定義的,而某次采集我們不需要16個數據,而是15個,我們將其更新為15。這樣,我們就不得不再重新設計、編寫我們的程序——將無聊的移位全部換成除法。當然,如果我們沒有意識到這次求平均的除數是移位4次的問題,那么,15個數據將仍然被除以16以求平均,結果可想而知。

          用移位操作時用移位,用除法是就是除法

          軟件的各種bug,有些是來自原作者,而更多的是來自那些對程序的更新、維護、移植時所造成的。因此,軟件代碼的應該有較強的可讀性與良好的可移植性。除非是那些特殊的函數與結構自己來搞定,大部分的優化還是交給編譯器去做吧!

         

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        c語言相關文章:c語言教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西丰县| 平凉市| 郎溪县| 远安县| 察雅县| 自治县| 清镇市| 商水县| 迁安市| 江油市| 宝鸡市| 绥芬河市| 资源县| 嘉黎县| 满洲里市| 察隅县| 元朗区| 伊宁县| 忻州市| 河北区| 文成县| 文水县| 香河县| 盖州市| 兴海县| 洱源县| 湖口县| 阿尔山市| 墨竹工卡县| 宜君县| 衡南县| 沁源县| 垫江县| 木兰县| 遵义市| 永清县| 凤台县| 富源县| 卓资县| 云霄县| 弋阳县|