C語言高效程式設計的四大祕技之使用位操作,減少除法和取模的運算
轉自:http://tech.163.com/06/1201/10/318HH45C00091KVA_2.html
第3招:使用位操作,減少除法和取模的運算
在計算機程式中,資料的位是可以操作的最小資料單位,理論上可以用“位運算”來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式執行的效率。舉例如下:
方法G
int I,J;
I = 257 /8;
J = 456 % 32;
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻煩了好多,但是,仔細檢視產生的彙編程式碼就會明白,方法G呼叫了基本的取模函式和除法函式,既有函式呼叫,還有很多彙編程式碼和暫存器參與運算;而方法H則僅僅是幾句相關的彙編,程式碼更簡潔,效率更高。當然,由於編譯器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 來看,效率的差距還是不小。相關彙編程式碼就不在這裡列舉了。
運用這招需要注意的是,因為CPU的不同而產生的問題。比如說,在PC上用這招編寫的程式,並在PC上除錯通過,在移植到一個16位機平臺上的時候,可能會產生程式碼隱患。所以只有在一定技術進階的基礎下才可以使用這招。
相關文章
- C語言高效程式設計的四大祕技之以空間換時間C語言程式設計
- C語言高效程式設計的四大祕技之數學方法解決問題C語言程式設計
- (C語言) int型之間除法運算,向零取整C語言
- C語言位運算C語言
- C語言程式設計入門之--第五章C語言基本運算和表示式-part2C語言程式設計
- C語言程式設計-長整數加法運算C語言程式設計
- C++除法運算 // 靜態斷言C++
- C語言位操作C語言
- C語言學習筆記——位運算C語言筆記
- C 語言程式設計利器之 CLion程式設計
- 關於C語言的位運算子C語言
- 使用C語言程式設計的7個步驟C語言程式設計
- 論減少程式碼中return語句的騷操作
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列
- 計算位數最高達300位的兩個非負整數的乘積,C語言程式設計實現C語言程式設計
- C語言:一種高效、易學的程式語言C語言
- C語言學習筆記之指標的運算C語言筆記指標
- C++的函數語言程式設計C++函數程式設計
- C語言 之 多執行緒程式設計C語言執行緒程式設計
- C語言程式設計之《資料輸出》C語言程式設計
- c語言程式設計題C語言程式設計
- 結對程式設計(c語言)程式設計C語言
- Java技術分享之函數語言程式設計Java函數程式設計
- Java技術分享之函數語言程式設計!Java函數程式設計
- 聊聊C語言/C++—程式和程式語言C語言C++
- C語言/C++程式設計學習:棧的程式碼實現之陣列方案C語言C++程式設計陣列
- 前端元件設計--位運算的妙用前端元件
- 【C語言】聊聊輾轉相除法C語言
- C語言程式設計-現代方法 第二版 第4.1小節 計算通用產品程式碼的校驗位C語言程式設計
- 程式設計中的遞迴(C語言為例)程式設計遞迴C語言
- 複數的四則運算(C語言實現)C語言
- c語言關於陣列的簡單運算C語言陣列
- 跨語言程式設計的探索 | 龍蜥技術程式設計
- C語言:使用函式計算兩點間的距離C語言函式
- OpenCV計算機視覺學習(15)——淺談影像處理的飽和運算和取模運算OpenCV計算機視覺
- 第一章 程式設計和C語言----案例程式設計C語言
- 20201022-成信大-C語言程式設計-20201學期《C語言程式設計B》C-trainingExercises26C語言程式設計AI
- C語言入門基礎之陣列——數學和程式設計的完美結合(圖)C語言陣列程式設計