```
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t p = 1;
uint32_t res = 0;
for (uint32_t i=0; i<32; ++i) {
// shift the output left by 1 bit
res <<= 1;
// Add the new bit to the output
res ^= n&p;
// shift input right by 1 bit
n >>= 1;
}
return res;
}
};
```