1. 程式人生 > >[LeetCode] 顛倒二進位制位

[LeetCode] 顛倒二進位制位

顛倒給定的 32 位無符號整數的二進位制位。

示例:

輸入: 43261596
輸出: 964176192
解釋: 43261596 的二進位制表示形式為 00000010100101000001111010011100 ,
     返回 964176192,其二進位制表示形式為 00111001011110000010100101000000 

進階:
如果多次呼叫這個函式,你將如何優化你的演算法?

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t res= 0;
        for(int i=0;i<32;i++)
        {
            if(n & 1 == 1)
                res = (res<<1)+1;
            else
                res = res<<1;
            n = n >> 1;
            
        }
        
        return res;
    }
};
class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
       uint32_t res = 0;
       int i = 0;
       while(i<32)
       {
           uint32_t temp = n & 0x01;
           res = (res<<1) | temp;
           i++;
           n =  n>>1;           
       }
        
       return res;
    }
};