當程序員在為英文網站建設、眾籌網站平台建設、企業營銷型網站建設等不同類型的網站建設和開發程序時,如果遇到了關於C程序建設方麵的問題可以隨時谘詢分形科技的在線客服,我們將隨時為您提供服務。下麵分形科技要為在家介紹的是使用自加、自減指令和減少運算的強度兩方麵的內容。

7、使用自加、自減指令的問題
在C程序建設中一般情況下使用自加、自減指令和複合賦值表達式(如a-=1及a+=1等)都能夠生成高質量的程序代碼,在編譯器中也能夠生成inc和dec之類的指令。但是如果使用a=a+1或a=a-1之類的指令,很多C編譯器就會生成二到三個字節的指令,所以程序員工選擇編輯器時一定要注意適用性。例,ICCAVR、GCCAVR、IAR等C編譯器生成的代碼是一樣的,也能夠生成高質量的inc和dec之類的的代碼。
8、減少運算的強度的問題
在C程cheng序xu建jian設she中zhong分fen形xing科ke技ji建jian議yi程cheng序xu員yuan盡jin量liang減jian少shao運yun算suan的de強qiang度du,可ke以yi使shi用yong運yun算suan量liang小xiao但dan功gong能neng相xiang同tong的de表biao達da式shi替ti換huan原yuan來lai複fu雜za的de的de表biao達da式shi,這zhe樣yang做zuo對dui加jia快kuai速su度du有you幫bang助zhu。
下麵介紹幾個減少運算的強度的實例。
(1)、求餘運算
方式a=a%8可以改為a=a&7
說明:位操作隻需一個指令周期即可完成,而大部分的C編譯器的“%”運算均是調用子程序來完成,代碼長、執行速度慢。所以我們隻要求是求2n方的餘數,均可使用位操作的方法來代替。
(2)平方運算
方式a=pow(a,2.0)可以改為a=a*a,a=pow(a,3.0);更改為a=a*a*a。
說明:在有內置硬件乘法器的單片機中(如51係列),乘法運算比求平方運算快得多,因為浮點數的求平方是通過調用子程序來實現的,在自帶硬件乘法器的AVR單片機中,如ATMega163中,乘法運算隻需2個時鍾周期就可以完成。既使是在沒有內置硬件乘法器的AVR單片機中,乘法運算的子程序比平方運算的子程序代碼短,執行速度快。
(3)用移位實現乘除法運算
方式a=a*4、b=b/4可以改為a=a<<2; [Page]、b=b>>2,a=a*9可以改為a=(a<<3)+a。
說明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,如果乘以2n,doukeyishengchengzuoyidedaima,erchengyiqitadezhengshuhuochuyirenheshu,juntiaoyongchengchufazichengxu。yongyiweidefangfadedaodaimabitiaoyongchengchufazichengxushengchengdedaimaxiaolvgao。shijishang,zhiyaoshichengyihuochuyiyigezhengshu,junkeyiyongyiweidefangfadedaojieguo。












