如何使用按位反转一个数字位(k位)?

时间:2012-06-30 05:24:09

标签: c++ bit-manipulation

  

可能重复:
  C reverse bits in unsigned integer
  How does this code work to reverse bits in number?

给定nk(n < 2^k)的数字,是否有一种快速的方法可以使用按位进行操作?这是我的slow解决方案:

int reverse_bit(int n, int bit_size) {
    bit_size--;

    int result = 0;
    while (n) {
        if ((n & 1) == 1)
            result += 1 * (1 << bit_size);

        n >>= 1;
        bit_size--;
    }

    return result;
}

0 个答案:

没有答案