|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請問在ICC里把一個3位數(shù)組按順序裝進long變量里,怎么最快最省? |
| 作者:lism 欄目:技術(shù)交流 |
請問在ICCAVR里面把BUF[0],BUF[1],BUF[2]按順序裝進一個LONG變量里,用什么方法最快?最省? tempuLONG=buf[0]; tempuLONG<<=8; tempuLONG+=buf[1]; tempuLONG<<=8; tempuLONG+=buf[2]; 這樣的程序占0.2k,暈~ |
| 2樓: | >>參與討論 |
| 作者: computer00 于 2006/6/29 13:20:00 發(fā)布:
試試這個: ((unsigned CHAR *)&tempulong)[0]=buf[2]; ((unsigned CHAR *)&tempulong)[1]=buf[1]; ((unsigned CHAR *)&tempulong)[2]=buf[0]; ((unsigned CHAR *)&tempulong)[3]=0; |
|
| 3樓: | >>參與討論 |
| 作者: lism 于 2006/6/29 13:30:00 發(fā)布:
好用!太謝謝了! |
|
| 4樓: | >>參與討論 |
| 作者: xwj 于 2006/6/29 13:45:00 發(fā)布:
聯(lián)合 |
|
| 5樓: | >>參與討論 |
| 作者: lism 于 2006/6/29 14:01:00 發(fā)布:
發(fā)現(xiàn)AVR(ICC)處理整型比較快,是否是16位機的原因? uint TEMP; TEMP=(buf[0]<<8)|buf[1]; TEMP=~TEMP; 比 buf[0]=~buf[0]; buf[1]=~buf[1]; TEMP=(buf[0]<<8)|buf[1]; 的代碼還要少。 請問這句用聯(lián)合體還會快嗎? TEMP=(buf[0]<<8)|buf[1]; 上面有點不明白 長整型不是3byte嗎? ((unsigned CHAR *)&TEMPulong)[0] ((unsigned CHAR *)&TEMPulong)[1] ((unsigned CHAR *)&TEMPulong)[2] 分別代表多少bit到多少bit? ((unsigned CHAR *)&TEMPulong)[3] 又是第幾bit? |
|
| 6樓: | >>參與討論 |
| 作者: computer00 于 2006/6/30 2:28:00 發(fā)布:
長整型是4Byte吧? 我記得ICCAVR是小端存儲模式,因此 ((unsigned CHAR *)&tempulong)[0] 表示最低8位 ((unsigned CHAR *)&tempulong)[1] 表示次低8位 ((unsigned CHAR *)&tempulong)[2] 表示次高8位 ((unsigned CHAR *)&tempulong)[3] 表示最高8位 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |