题目:颠倒给定的 32 位无符号整数的二进制位。

代码:

uint32_t reverseBits(uint32_t n) {
    uint32_t m=0;
    for(int i=0;i<32;i++){
        m<<=1;
        if((n&1)==1) m+=1;
        n>>=1;
    }
    return m;
}

算法解释:

  N首先和1与运算,拿到最后一位,加到M上。然后M向左移一位。这样移动32次,刚好得到想要的结果。