|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何定義位變量? |
| 作者:上善若水 欄目:ARM技術(shù) |
C51有bit能聲明只有一位的變量,很適合一些標(biāo)志的定義,有效節(jié)省了內(nèi)存空間。在使用了周立功模板的ADS中的c中有沒有類似的位變量定義?難道我只是想定義一個標(biāo)志變量也要定義為uint8? |
| 2樓: | >>參與討論 |
| 作者: zy315 于 2006/1/5 8:03:00 發(fā)布:
RE bit是51機(jī)C語言專用的數(shù)據(jù)類型,ANSI C中哪有這種類型??bit是為適應(yīng)51機(jī)可位尋址的128bit區(qū)域。但 標(biāo)準(zhǔn)C語言里有個叫位域,也叫位段的東西,強(qiáng)制訪問內(nèi)存中的單個位,你可以看看譚浩強(qiáng)的那本書的第12章。 |
|
| 3樓: | >>參與討論 |
| 作者: eleven11 于 2006/1/5 8:23:00 發(fā)布:
位域會增加代碼 其實(shí)就是與操作,和你定義某某位什么標(biāo)志一樣的操作 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2006/1/5 8:42:00 發(fā)布:
位段會增加代碼量以及程序運(yùn)行時間 對于32位的MCU來說,如果為了提高運(yùn)行速度,有時使用32bit的反而會比使用8bit的運(yùn)行速度快。使用1bit的也是同樣的道理。 ARM的存儲空間應(yīng)該比較,你不必為省這么幾個字節(jié)較真吧?如果實(shí)在是有太多的標(biāo)志,使用位段也可以。 |
|
| 5樓: | >>參與討論 |
| 作者: 上善若水 于 2006/1/5 9:19:00 發(fā)布:
請問computer00 “有時使用32bit的反而會比使用8bit的運(yùn)行速度快!笔遣皇钦f把一些原本定義為8字節(jié)的變量,定義為32字節(jié),雖然浪費(fèi)了一定的內(nèi)存空間,但是能提高運(yùn)行速度? |
|
| 6樓: | >>參與討論 |
| 作者: computer00 于 2006/1/5 9:30:00 發(fā)布:
是的。 因?yàn)樵?2位CPU上處理8bit的數(shù)據(jù),為了保證最后結(jié)果的正確性,還要進(jìn)行一些調(diào)整,例如與操作,去掉高24位等。 你可以看看生成的匯編代碼就知道了。 當(dāng)然,對于速度沒有嚴(yán)格要求的場合,使用比較小的存儲單元是好的做法,尤其是在變量很多時。 但有時為了優(yōu)化運(yùn)行速度,不得不犧牲存儲空間。 |
|
| 7樓: | >>參與討論 |
| 作者: zy315 于 2006/1/5 11:16:00 發(fā)布:
a 樓主問的是如何表示單個位的標(biāo)志,只是為了改善程序的可讀性,并沒有關(guān)心速度的問題,位域顯然是通過與或操作進(jìn)行的,因?yàn)樗⒉荒芨淖傾RM處理器內(nèi)核的訪問存儲器的本質(zhì)操作,像51那種可位尋址的單元在ARM體系中不存在,訪問單個位只能通過軟件實(shí)現(xiàn),效率勢必比硬件直接支持的低。這樣做只是增加程序的可讀性。 被ZLG置頂?shù)姆⻊?wù)條款明確指明不對C語言語法進(jìn)行技術(shù)支持服務(wù),但給我們提供一個交流平臺也是好的! |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |