4
A
回答
8
對於這樣的事情,我建議你去美妙的bit twiddling hacks網頁。下面是從該網頁的解決方案之一:
unsigned char b; // reverse this (8-bit) byte
b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
的乘法運算創建五個單獨的副本:
3個操作(64位乘法和模量分裂)反向在一個字節中的位的8位字節模式將扇出爲64位值。與操作相對於每個10位的位組選擇位於正確(反向)位置的位。乘法和AND操作複製原始字節的位,使它們每個僅出現在10位集中的一箇中。來自原始字節的位的反轉位置與它們在任何10位集內的相對位置重合。最後一步涉及2^10-1的模數除法,它將每組10位(從位置0-9,10-19,20-29,...)合併到64位值。它們不重疊,因此模數分區下的附加步驟就像是操作一樣。
這種方法是由於富含Schroeppel在編程黑客Beeler, M., Gosper, R. W., and Schroeppel, R. HAKMEM. MIT AI Memo 239, Feb. 29, 1972.
部分和這裏的different solution不使用64位整數:
的[C扭轉無符號整數比特]反轉的位(無64位):
b =((b * 0x0802LU & 0x22110LU)|(b * 0x8020LU & 0x88440LU))* 0x10101LU >> 16;
確保將結果賦值或轉換爲無符號字符以刪除高位中的垃圾。由肖恩·安德森,7月13日提出的,2001年發現輸入錯誤並通過麥克基思,1月3日提供校正,2002.
相關問題
- 1. 紋理翻轉和顛倒
- 2. 翻轉svg顛倒和左側右側
- 3. 顛倒OCaml中的int
- 4. 如何翻轉或顛倒相等性檢查
- 5. 如何翻轉JFrame及其兒童顛倒?
- 6. 顛倒名單c#
- 7. 安卓的顛倒旋轉
- 8. 作爲SKEffectNode的子SKLabelNode上的SKWarpGeometry翻轉標籤顛倒
- 9. 任何視圖的顛倒轉換
- 10. 顛倒字符串c#
- 11. 顛倒C中的字符串
- 12. 如何顛倒MySQL結果
- 13. 如何顛倒Jung DirectedGraph?
- 14. 如何顛倒numpy中的子數組?
- 15. 如何旋轉我的應用程序180度顛倒旋轉設備180度顛倒?
- 16. 如何顛倒c#中的字節數組的順序?
- 17. 天和月被顛倒
- 18. 顛倒顛倒python中的星號三角形
- 19. 如何在* ngFor中顛倒順序?
- 20. Monotouch - 校正顛倒的圖像旋轉
- 21. 如何在NSString中反轉(顛倒)文本
- 22. 顛倒python中的循環?
- 23. PDF顛倒
- 24. 顛倒ObservableCollection
- 25. Hubtile.Title顛倒
- 26. 顛倒鏈表
- 27. 顛倒Floyd-Warshall
- 28. 顛倒鏈表?
- 29. 顛倒的文字
- 30. 如何轉換int到int?,在C#中?
可能重複(http://stackoverflow.com/questions/9144800/c-reverse-bits-in-unsigned-integer) – Jacob
你知道如何爲數組寫一個反轉函數嗎?這可以用類似的方式完成。 –
可能的重複[在C/C++中最簡單的方法是顛倒一個字節中的位的順序?](http://stackoverflow.com/questions/2602823/in-cc-whats-the-simplest-way-to -reverse-的階的位功能於一個字節) – interjay