Reverse Bits (LeetCode)

Question:

https://leetcode.com/problems/reverse-bits/

解答:

没什么特别的方法,就是源int值最右边的bit作为结果int的最左边bit,右移左移32次。

如果要调用很多次,可以预先对每个bit的值做mapping,比如0x0001对应0x7000,如果n&bit[i],则结果加上bitMap[i] (但是不觉得能优化多少)。

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t ret;
        
        for (int i = 0; i < 32; i++)
        {
            ret <<= 1;
            ret += n&0x01;
            n >>= 1;
        }
        
        return ret;
    }
};

 

posted @ 2015-03-12 14:28  smileheart  阅读(122)  评论(0)    收藏  举报