Re: [問題] 位元運算問題?

看板C_and_CPP作者 (O_Q)時間12年前 (2012/02/23 10:01), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《zerg7475 (O_Q)》之銘言: : 寫一函數,將一8bit的資料左右邊交換 : void swap_byte(unsigned char p) : 例如 : unsign char p; : p=0x38; : q=swap_byte(p); : q=0x83; : 想到方法是 : unsigned char a=0x01; 然後0x01<<=1;一個一個比較 : 最後前面四位元乘以16後面四個位元除以16 : 但unsign char用乘法運算好像也不是很正確 : 感謝 再請問一下 是不是因為宣告為char q = (p>>4) + (p<<4) 所以p>>4和p<<4的右邊四個位元和左邊四個位元會消失? 用int好像就不是這樣 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.172.207

02/23 10:25, , 1F
消失的原因只是因為移出去了而已
02/23 10:25, 1F

02/23 10:52, , 2F
補0
02/23 10:52, 2F

02/23 21:43, , 3F
02/23 21:43, 3F

02/26 23:13, , 4F
沒有消失. 如果是signed char -1>>4 等於-1
02/26 23:13, 4F

02/26 23:14, , 5F
如前一封S大說的.unsigned char p; 這樣就對了
02/26 23:14, 5F

02/26 23:21, , 6F
更正:會消失,但不是你的問題的原因
02/26 23:21, 6F

02/26 23:21, , 7F
自行查一下Sign extension.
02/26 23:21, 7F
文章代碼(AID): #1FHPts2N (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FHPts2N (C_and_CPP)