音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)高手指點(diǎn):按位倒序的算法

作者:ZYORK 欄目:單片機(jī)
請(qǐng)高手指點(diǎn):按位倒序的算法
對(duì)單片機(jī)用C51編程時(shí)遇到一個(gè)情況,就是原來(lái)高位在前、低位在后的一個(gè)LONG形變量需要按位倒序成低位在前、高位在后的新變量,我只需要其中的位16-位0。
我采用的辦法是把這個(gè)LONG型變量定義在bdata區(qū),然后按位聲明sbit b1=var^1,再用手動(dòng)的方式一位一位的移動(dòng),此時(shí)還需要注意的就是在單片機(jī)中LONG形變量存放時(shí)是低字節(jié)在前高字節(jié)在后的,因此最后會(huì)比較麻煩
請(qǐng)問(wèn)各位高手有沒(méi)有簡(jiǎn)便一些同時(shí)還能夠節(jié)省bdata區(qū)的算法呢,請(qǐng)指教!

2樓: >>參與討論
ARMANDLEG
無(wú)符號(hào)整數(shù)的
無(wú)符號(hào)整數(shù)的給你一段碼子吧,做過(guò)測(cè)試,好象可以用的
unsigned int rev(unsigned int x)
{
  unsigned CHAR hbrev[]={0,8,4,0xc,2,0xa,6,0xe,1,9,5,0xd,3,0xb,7,0xf};
  unsigned int y;
  y = hbrev[x/4096] + hbrev[(x%4096)/256]*16 + hbrev[(x%256)/16]*256 + hbrev[x%16]*4096;
  return y;
}

void main()
{unsigned int y;
unsigned x = 0x83ac;   //1001001110101100---->0011010111000001  0x35c1
y = rev(x);


3樓: >>參與討論
ARMANDLEG
補(bǔ)充
寫得有點(diǎn)亂,rev里直接寫“return hbrev[x/4096] + hbrev[(x%4096)/256]*16 + hbrev[(x%256)/16]*256 + hbrev[x%16]*4096;”就可以了,不必定義什么鳥(niǎo)y的,呵呵

4樓: >>參與討論
zyork
呵呵,高,實(shí)在是高!
本質(zhì)上應(yīng)該還是逐個(gè)倒序,但是是按照四個(gè)二進(jìn)制位為一組查表進(jìn)行,提高了運(yùn)行效率,節(jié)省了空間,呵呵,果然很厲害啊,多謝了,以此類推也可以得出LONG型的算法來(lái)了
另外,這位大哥是不是經(jīng)常通宵啊,呵呵,很榮幸得到你的指點(diǎn)!!

5樓: >>參與討論
rigelkent
建議取余和除法運(yùn)算改成強(qiáng)制類型轉(zhuǎn)換到CHAR型指針,效率高n倍
((CHAR*)&x)[0]
((CHAR*)&x)[1]
((CHAR*)&x)[2]
((CHAR*)&x)[3]
每句只要一條到3條匯編代碼,除法和取余耗費(fèi)幾百條。


6樓: >>參與討論
mmax
我的笨辦法,^_^
一個(gè)笨辦法,不開(kāi)數(shù)組

偽代碼

unsigned int y = 0;
CHAR i = 0;

for(i=0; i<16; i++)
{

    if( x & 0x8000 )
    {
        y += 1;
    }

    x <<= 1;
    y <<= 1;
}

沒(méi)有試過(guò),只是一個(gè)想法。
自認(rèn)為特點(diǎn)是:程序空間小,執(zhí)行效率不是很高。

7樓: >>參與討論
西安周公
兩個(gè)變量加進(jìn)位位 (C)按位左右移循環(huán)
 
8樓: >>參與討論
yadog
re
學(xué)習(xí)

9樓: >>參與討論
zyork
多謝各位的指點(diǎn)啊,受益匪淺
其實(shí)我用的存儲(chǔ)器并沒(méi)有這樣要求,是我理解錯(cuò)了,不過(guò)也就有了這個(gè)意外收獲了,呵呵

10樓: >>參與討論
qqkevin
菜鳥(niǎo)弱弱地問(wèn)一下
((CHAR*)&x)[0]
((CHAR*)&x)[1]
((CHAR*)&x)[2]
((CHAR*)&x)[3]
這句話是什么意思啊?為什么這樣做就可以答到想要的效果呢?

11樓: >>參與討論
javie
是強(qiáng)制轉(zhuǎn)換
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用573擴(kuò)展開(kāi)關(guān)量輸出時(shí)遇到的問(wèn)題
請(qǐng)教高手TI公司的MSC1210單片機(jī)
3V的MCU電源系統(tǒng),P0口可以外拉5V的電源嗎?
哪里有16點(diǎn)陣GBK字庫(kù)下載?
各位熟悉AD的大哥幫幫忙呀
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)