LeetCode-190. Reverse Bits

Description

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?

Solution 1(C++)

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

Soluiton 2(C++)

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        if(n==0 || n==0xffffffff) return n;
        uint32_t r=0;
        uint32_t shft=0;
        while(shft<32) {
            r = (r << 1) | ((n >> shft) & 0x1);
            ++shft;
        }
        return r;
    }
};

算法分析

略。

程序分析

略。

你可能感兴趣的:(LeetCode,LeetCode,Bit,Manipulation)