From : https://leetcode.com/problems/reverse-bits/
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t s, cur = 1<<31;
while(n) {
s += (n&1)*cur;
cur = cur>>1;
n = n>>1;
}
return s;
}
};
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
n = ((0xAAAAAAAA&n)>>1)|((0x55555555&n)<<1);
n = ((0xCCCCCCCC&n)>>2)|((0x33333333&n)<<2);
n = ((0xF0F0F0F0&n)>>4)|((0x0F0F0F0F&n)<<4);
n = ((0xFF00FF00&n)>>8)|((0x00FF00FF&n)<<8);
n = ((0xFFFF0000&n)>>16)|((0x0000FFFF&n)<<16);
return n;
}
};
860

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



