力扣190:颠倒二进制位
力扣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;}
};