题目:
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
解答:
通过交换来进行bit的reverse即可
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t mask = 0xffff0000;
n = ((n << 16) & mask) | ((n >> 16) & ~mask);
mask = 0xff00ff00;
n = ((n << 8) & mask) | ((n >> 8) & ~mask);
mask = 0xf0f0f0f0;
n = ((n << 4) & mask) | ((n >> 4) & ~mask);
mask = 0xCCCCCCCC;
n = ((n << 2) & mask) | ((n >> 2) & ~mask);
mask = 0xAAAAAAAA;
n = ((n << 1) & mask) | ((n >> 1) & ~mask);
return n;
}
};