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語言位運算C語言
- 程式設計秘籍:使C語言高效的四大絕招(轉)程式設計C語言
- C語言 僅用位設定和位清除表示位運算C語言
- C語言程式設計-長整數加法運算C語言程式設計
- C語言程式設計入門之--第五章C語言基本運算和表示式-part2C語言程式設計
- C語言高效程式設計的幾招(轉)C語言程式設計
- C++除法運算 // 靜態斷言C++
- 取冪運算--C語言描述C語言
- C語言高效程式設計的的四招技巧[轉]C語言程式設計
- C語言學習筆記——位運算C語言筆記
- C語言第五篇:位運算C語言
- C語言位操作C語言
- C 語言高效程式設計與程式碼優化程式設計優化
- 論減少程式碼中return語句的騷操作
- 關於C語言的位運算子C語言
- C 語言程式設計利器之 CLion程式設計
- 程式中減少使用 if 語句的方法集錦
- 程式中減少使用if語句的方法集錦
- C語言:一種高效、易學的程式語言C語言
- 使用C語言程式設計的7個步驟C語言程式設計
- 怎麼減少程式設計中的 bug?程式設計
- 我的高效程式設計祕訣程式設計
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列
- C語言程式設計C語言程式設計
- C語言資料型別和算數運算C語言資料型別
- MySQL的C語言程式設計(一)MySqlC語言程式設計
- 計算位數最高達300位的兩個非負整數的乘積,C語言程式設計實現C語言程式設計
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- 谷歌大牛的 C 語言程式設計建議和技巧谷歌程式設計
- C語言void指標的運算操作[小知識]C語言指標
- C語言程式設計之《資料輸出》C語言程式設計
- C語言 之 多執行緒程式設計C語言執行緒程式設計
- 如何設計一門語言(十一)——刪減語言的功能
- C語言 資料的位級表示及操作C語言
- C++的函數語言程式設計C++函數程式設計
- C語言程式設計原理C語言程式設計