Reverse Bits
Reverse bits of a given 32 bits unsigned integer.
Analysis: a typical question focus on bit operations, be careful about boundaries.
Solution:
uint32_t reverseBits(uint32_t n) {
int size = sizeof(uint32_t) * 8;
int result = 0;
int i;
int val;
for(i = 0; i < size; i ++)
{
val = (1<<i) & n; // if ith bit in n is set, val > 0, otherwise val = 0
if(val > 0) // be careful don't use if(val == 1)
{
result |= 1<<(size - i -1); // set (size - i -1)th bit in resullt if ith bit is set in n
}
}
return result;
}
No comments:
Post a Comment