| 
  |||||||||||
| 技術(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  | 
  
對(duì)keil移位的不解。請(qǐng)指點(diǎn) | 
  
| 作者:huangqi412 欄目:單片機(jī) | 
都說(shuō)c中》和《是補(bǔ)0, 但是為什么我在keil中軟件仿真發(fā)現(xiàn)不對(duì)勁呢。 如果是unsigned右移是補(bǔ)0,為什么用CHAR則補(bǔ)1呢? CHAR f; f=0xfd; f=f>>1; // 發(fā)現(xiàn)它變成了0xfe呢,也就是說(shuō)右移后左邊是補(bǔ)的1  | 
  
| 2樓: | >>參與討論 | 
| 作者: ayb_ice 于 2007/3/14 16:12:00 發(fā)布:
         隨便說(shuō)說(shuō) 應(yīng)該是這樣吧 unsigned CHAR f; f=0xFD; f = f>>1; //  | 
  |
| 3樓: | >>參與討論 | 
| 作者: hkap 于 2007/3/14 16:18:00 發(fā)布:
         CHAR 是有符號(hào)變量,最高位為1表示負(fù)數(shù)  | 
  |
| 4樓: | >>參與討論 | 
| 作者: 浪淘沙 于 2007/3/14 16:44:00 發(fā)布:
         3樓正解;不能因?yàn)橐莆欢挂粋(gè)負(fù)數(shù)變成正數(shù)  | 
  |
| 5樓: | >>參與討論 | 
| 作者: huangqi412 于 2007/3/14 21:38:00 發(fā)布:
         再請(qǐng)教一下 main() { CHAR yiwei(); ~~~~~ deng=yiwei(deng,n); ~~~~~~ } CHAR yiwei(CHAR s,CHAR r)//傳遞參數(shù),被移數(shù)和移動(dòng)次數(shù) { unsigned CHAR b,c; //用uCHAR型 b=s>>(8-r); //這里變成補(bǔ)1 什么原理呢 c=s<<r; //這里左移是補(bǔ)0 s=c|b; // return(s); } 如果我不改變大體結(jié)構(gòu)的話,怎么變成補(bǔ)0呢,  | 
  |
| 6樓: | >>參與討論 | 
| 作者: 平常人 于 2007/3/14 22:05:00 發(fā)布:
         這是在做循環(huán)移位,樓主不妨用幾個(gè)數(shù)在紙上演算一下,很簡(jiǎn)單 在紙上演算一下是個(gè)非常有效的辦法,對(duì)這種小程序非常合適;自己演算一下印象更深刻。  | 
  |
| 7樓: | >>參與討論 | 
| 作者: huangqi412 于 2007/3/14 22:37:00 發(fā)布:
         我現(xiàn)在問(wèn)題是不知道為什么變成了補(bǔ)1,原因 現(xiàn)在我知道可以這個(gè)可以直接調(diào)庫(kù)函數(shù) 不過(guò),剛用了幾天keil c,這兩天在里面亂搞鼓,看各種情況機(jī)器是怎么處理的,什么原理,以后真正寫程序就有章可循,知道怎么樣寫好一些。出了錯(cuò)也容易找。  | 
  |
| 8樓: | >>參與討論 | 
| 作者: sjnh 于 2007/3/15 9:02:00 發(fā)布:
         負(fù)數(shù)右移當(dāng)然補(bǔ)1 就像 浪淘沙 說(shuō)得,補(bǔ)0就變成正數(shù)了  | 
  |
| 9樓: | >>參與討論 | 
| 作者: 9398711029 于 2007/3/15 9:22:00 發(fā)布:
         那負(fù)數(shù)左移怎么就能邊成正數(shù)呢? deng=0x8e; deng<<=1; //deng=?  | 
  |
| 10樓: | >>參與討論 | 
| 作者: huangqi412 于 2007/3/15 11:21:00 發(fā)布:
         懂拉,謝謝  | 
  |
| 11樓: | >>參與討論 | 
| 作者: rainbowwrh 于 2007/3/15 14:55:00 發(fā)布:
         移位 看是算術(shù)移位還是邏輯移位了額 前者是把最高位補(bǔ)到后面去 后者是補(bǔ)0到最低位去  | 
  |
| 12樓: | >>參與討論 | 
| 作者: 悠忽 于 2007/3/16 23:01:00 發(fā)布:
         好好看看C語(yǔ)言的書吧,邏輯移位和算術(shù)移位是有區(qū)別的 unsigned右移是補(bǔ)0,用c有符則補(bǔ)1  | 
  |
| 13樓: | >>參與討論 | 
| 作者: computer00 于 2007/3/17 1:08:00 發(fā)布:
         同樣是>>操作,不同的系統(tǒng)結(jié)果可能會(huì)不一樣,有的是邏輯右移, 有的是算術(shù)右移. 只有有符號(hào)的負(fù)數(shù)右移時(shí),才會(huì)出現(xiàn)這個(gè)問(wèn)題。  | 
  |
| 14樓: | >>參與討論 | 
| 作者: huangqi412 于 2007/3/17 8:48:00 發(fā)布:
         恩看了,潭浩強(qiáng)c語(yǔ)言書上說(shuō)的,只有負(fù)數(shù)右移有點(diǎn)麻煩  | 
  |
| 15樓: | >>參與討論 | 
| 作者: zxq1234508 于 2007/3/17 9:52:00 發(fā)布:
         ? 為什么int型和unsigned int型不會(huì)出現(xiàn)樓主說(shuō)的那中情況呢?我剛才試過(guò)了。  | 
  |
| 16樓: | >>參與討論 | 
| 作者: computer00 于 2007/3/17 10:04:00 發(fā)布:
         int型,你用-1去試試?  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)  |