[算法]有趣的《Bit Twiddling Hacks》字节位反转
给定一个字节input,定义其二进制为abcd efgh,将其比特位进行反转。
1. 乘+与+取模
公式:
r e v e r t e d = ( i n p u t ∗ 0 x 0202020202 U L L & 0 x 010884422010 U L L ) % 1023 reverted = (input \ * \ 0x0202020202ULL \ \& \ 0x010884422010ULL) \ \% \ 1023 reverted=(input ∗ 0x0202020202ULL & 0x010884422010ULL) % 1023
将input的二进制abcd efgh代入展开如下:
abcd efgh (-> hgfe dcba)
* 10 0000 0010 0000 00

本文深入探讨了两种高效的字节位反转算法,分别通过乘法、与运算和取模,以及乘法、与运算、乘法和右移位实现。详细解释了每一步操作如何作用于输入的字节,利用位操作的特性实现位反转,并通过实例展示了这些操作如何组合以达到预期效果。这些算法对于理解和优化位操作的代码具有重要价值。
最低0.47元/天 解锁文章
183

被折叠的 条评论
为什么被折叠?



