力扣190:顛倒二進制位
- 題目
- 思路
- 代碼
題目
顛倒給定的 32 位無符號整數number的二進制位。
思路
思路很簡單,我們只需要得到number從低位到高位的每一個二進制位再把二進制位移到顛倒的res的對應二進制位即可,例如number的最低位為1那么res的最高位即1,也就是number的第i位是res的第31-i位。
代碼
class Solution {
public:int reverseBits(int n) {if(n == 0){return 0;}int res = 0;for(int i = 0; i < 32;i++){//res |= x 使用按位或得到每一個二進制位的值//(n&1) 與1進行按位與得到n的最低位的二進制值//x <<(31-i) 將x左移31-i位也就是將當前二進制位移到顛倒后的位置res |= (n&1) << (31-i);// x >>= 1 右移一位,舍棄最低位高位由0填補n >>= 1;}return res;}
};