題目描述:
顛倒給定的 32 位無符號整數(shù)的二進制位聪舒。
示例 1:
輸入: 00000010100101000001111010011100
輸出: 00111001011110000010100101000000
解釋: 輸入的二進制串 00000010100101000001111010011100 表示無符號整數(shù) 43261596,
因此返回 964176192,其二進制表示形式為 00111001011110000010100101000000唱蒸。
解題思路:
使用一位運算符:<< 和 >>
a << 2 :a的二進制數(shù)向左移兩位结借,最左邊兩位丟棄尺借,最右邊兩位用0補充可婶;右移一樣稍计。
代碼:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t ans = 0;
int i = 32;
while(i--)
{
ans<<=1;
ans+=n&1;//將n的最末位復制過來
n>>=1;//丟棄n的最末味
}
return ans;
}
};