输入:
arbitrary bitset, e.g. bit positions 012345
arbitrary bit mask, e.g. (x=1) xx0x0x
输出:
xx0x1x2345
也就是说,我希望将 bitset 的第一位放在掩码的第一个 0 中。同样,第二个位被放置在掩码的第二个 0 中。
例子:
mask = 1001001
bits = 1101
result = 1111011
我知道这可以通过循环来完成,但我想主要使用位操作来完成。我知道您可以仅使用掩码和位运算符来执行任意位排列。我愿意花大量时间设置排列掩码,因为输入掩码将被多次使用。
编辑:我查看了http://graphics.stanford.edu/~seander/bithacks.html和http://www.hackersdelight.org/HDcode.htm的算法,但还没有找到确切的方法.