Re: [問題] BitSwap
看板C_and_CPP (C/C++)作者Favonia (小西風最乖了*^^*)時間14年前 (2011/11/16 11:38)推噓1(1推 0噓 1→)留言2則, 2人參與討論串2/5 (看更多)
※ 引述《kinding (de)》之銘言:
: → bleed1979:http://0rz.tw/iQKVb stackoverflow上的解。 11/15 05:23
這個問題很有趣,我來畫畫圖好了。(就不管什麼 char 可能不是 8 bits 之類的鳥事好了)
| unsigned char b; // reverse this (8-bit) byte
| b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
@ http://0rz.tw/iQKVb
b
12345678
0x0202020202ULL
*_______*_______*_______*_______*_
b * 0x0202020202ULL
1234567812345678123456781234567812345678_
0x010884422010ULL
*____*___*____*___*____*___*________*____
(b * 0x0202020202ULL) & 0x010884422010ULL
1____6___2____7___3____8___4________5____
1023
**********
### % 1023
* ------> *
10
((b * 0x0202020202ULL) & 0x010884422010ULL) % 1023
1____6___2____7___3____8___4________5____
1 ------> 1 ------> 1 ------> 1 ------> 1
2 ------> 2 ------> 2 ------> 2
3 ------> 3 ------> 3
4 ------> 4
5
6 ------> 6 ------> 6 ------> 6
7 ------> 7 ------> 7
8 ------> 8
_________________________________87654321
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.39
※ 編輯: Favonia 來自: 140.112.30.39 (11/16 11:39)
推
11/16 12:31, , 1F
11/16 12:31, 1F
→
11/16 23:53, , 2F
11/16 23:53, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章