Sunday, April 19, 2015

[Leetcode] Reverse Bits

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