[問題] BitSwap

看板C_and_CPP (C/C++)作者 (de)時間14年前 (2011/11/15 01:35), 編輯推噓1(108)
留言9則, 6人參與, 最新討論串1/5 (看更多)
請寫一個char Bitswap(char a) function,也就是 bit0 <-> bit7 bit1 <-> bit6 bit2 <-> bit5 bit3 <-> bit4 ,舉例來說你輸入0x80 則輸出0x01 我的想法是用一個char temp[8];每個元素存一個bit 所以將原本的char轉成二進位並存入temp 然後用reverse,最後再將陣列的元素轉成數值 但是這樣的想法感覺很沒有效率,或許查表可以比較快 但是這樣一來要建立255個轉換,有人有高見嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.188.144

11/15 01:39, , 1F
當然這個有一種shift加上遮罩方式 但是完全看不懂的神等級
11/15 01:39, 1F

11/15 03:15, , 2F
11/15 03:15, 2F

11/15 05:23, , 3F
http://0rz.tw/iQKVb stackoverflow上的解。
11/15 05:23, 3F

11/15 11:42, , 4F
b 大給的 link, 點進去頭就暈了 Orz.
11/15 11:42, 4F

11/15 14:10, , 5F
不能同意樓上更多,堆疊溢位好多可怕的東西
11/15 14:10, 5F

11/15 21:21, , 6F
所以堆疊溢位很可怕呀....Orz
11/15 21:21, 6F

11/16 12:18, , 7F
就兩個 nible 個別 reverse ,然後再 swap
11/16 12:18, 7F

11/16 12:19, , 8F
一些 MCU 有現成的 swap nibble 的 machine code
11/16 12:19, 8F

11/16 12:22, , 9F
好像整個 byte reverse 就可以了~
11/16 12:22, 9F
文章代碼(AID): #1EmL5HSx (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
0
3
1
2
完整討論串 (本文為第 1 之 5 篇):
2
3
0
3
1
2
1
9
文章代碼(AID): #1EmL5HSx (C_and_CPP)