關(guān)于北京網(wǎng)站建設(shè)之C程序建設(shè)的相關(guān)知識分形科技已為在家介紹了很多了,不過相信那些想要深入學(xué)習(xí)的程序員們還是覺得不夠,依然迫切的需求用戶專業(yè)的知識來豐富自己的工作技能。為了幫助大家可以更加深入的了解C程序建設(shè),分形科技繼續(xù)為大家介紹一些關(guān)于這方面的知識。
當(dāng)程序員在為英文網(wǎng)站建設(shè)、眾籌網(wǎng)站平臺建設(shè)、企業(yè)營銷型網(wǎng)站建設(shè)等不同類型的網(wǎng)站建設(shè)和開發(fā)程序時,如果遇到了關(guān)于C程序建設(shè)方面的問題可以隨時咨詢分形科技的在線客服,我們將隨時為您提供服務(wù)。下面分形科技要為在家介紹的是使用自加、自減指令和減少運算的強度兩方面的內(nèi)容。

7、使用自加、自減指令的問題
在C程序建設(shè)中一般情況下使用自加、自減指令和復(fù)合賦值表達(dá)式(如a-=1及a+=1等)都能夠生成高質(zhì)量的程序代碼,在編譯器中也能夠生成inc和dec之類的指令。但是如果使用a=a+1或a=a-1之類的指令,很多C編譯器就會生成二到三個字節(jié)的指令,所以程序員工選擇編輯器時一定要注意適用性。例,ICCAVR、GCCAVR、IAR等C編譯器生成的代碼是一樣的,也能夠生成高質(zhì)量的inc和dec之類的的代碼。
8、減少運算的強度的問題
在C程序建設(shè)中分形科技建議程序員盡量減少運算的強度,可以使用運算量小但功能相同的表達(dá)式替換原來復(fù)雜的的表達(dá)式,這樣做對加快速度有幫助。
下面介紹幾個減少運算的強度的實例。
(1)、求余運算
方式a=a%8可以改為a=a&7
說明:位操作只需一個指令周期即可完成,而大部分的C編譯器的“%”運算均是調(diào)用子程序來完成,代碼長、執(zhí)行速度慢。所以我們只要求是求2n方的余數(shù),均可使用位操作的方法來代替。
(2)平方運算
方式a=pow(a,2.0)可以改為a=a*a,a=pow(a,3.0);更改為a=a*a*a。
說明:在有內(nèi)置硬件乘法器的單片機中(如51系列),乘法運算比求平方運算快得多,因為浮點數(shù)的求平方是通過調(diào)用子程序來實現(xiàn)的,在自帶硬件乘法器的AVR單片機中,如ATMega163中,乘法運算只需2個時鐘周期就可以完成。既使是在沒有內(nèi)置硬件乘法器的AVR單片機中,乘法運算的子程序比平方運算的子程序代碼短,執(zhí)行速度快。
(3)用移位實現(xiàn)乘除法運算
方式a=a*4、b=b/4可以改為a=a<<2; [Page]、b=b>>2,a=a*9可以改為a=(a<<3)+a。
說明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,如果乘以2n,都可以生成左移的代碼,而乘以其它的整數(shù)或除以任何數(shù),均調(diào)用乘除法子程序。用移位的方法得到代碼比調(diào)用乘除法子程序生成的代碼效率高。實際上,只要是乘以或除以一個整數(shù),均可以用移位的方法得到結(jié)果。
上文接北京網(wǎng)站建設(shè)之C程序建設(shè)相關(guān)知識【續(xù)】、北京網(wǎng)站建設(shè)之C程序建設(shè)相關(guān)知識總結(jié)