[問題] 位元運算問題?

看板C_and_CPP作者 (O_Q)時間12年前 (2012/02/22 15:56), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/2 (看更多)
寫一函數,將一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用乘法運算好像也不是很正確 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.172.223

02/22 16:25, , 1F
q += p & 1; q+= p & 2; q += p & 4; 依此類推
02/22 16:25, 1F

02/22 16:26, , 2F
另外這題應該有logN的作法 上面是N
02/22 16:26, 2F

02/22 16:56, , 3F
(p<<4) | (p>>4), for unsigned char.
02/22 16:56, 3F

02/22 16:58, , 4F
我忘記加位移 搞笑了..記得補一下
02/22 16:58, 4F

02/22 17:02, , 5F
q += (p & 1)<<7; ... q += (p & 128)>>7; 這樣
02/22 17:02, 5F

02/22 17:09, , 6F
喔我好像誤解了題目...我看一下
02/22 17:09, 6F

02/22 17:14, , 7F
q = (p>>4) + (p<<4); 看到s大才發現我弄錯了
02/22 17:14, 7F
文章代碼(AID): #1FH9-mYv (C_and_CPP)
文章代碼(AID): #1FH9-mYv (C_and_CPP)