详情

十念 Lv.8

关注
题目

颠倒给定的 32 位无符号整数number的二进制位。
思路

思路很简朴,我们只必要得到number从低位到高位的每一个二进制位再把二进制位移到颠倒的res的对应二进制位即可,例如number的最低位为1那么res的最高位即1,也就是number的第i位是res的第31-i位。
代码

  1. class Solution {
  2. public:
  3.     int reverseBits(int n) {
  4.         if(n == 0)
  5.         {
  6.             return 0;
  7.         }
  8.         int res = 0;
  9.         for(int i = 0; i < 32;i++)
  10.         {
  11.             //res |= x 使用按位或得到每一个二进制位的值
  12.             //(n&1) 与1进行按位与得到n的最低位的二进制值
  13.             //x <<(31-i) 将x左移31-i位也就是将当前二进制位移到颠倒后的位置
  14.             res |= (n&1) << (31-i);
  15.             // x >>= 1 右移一位,舍弃最低位高位由0填补
  16.             n >>= 1;
  17.         }
  18.         return res;
  19.     }
  20. };
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
31阅读
0回复

暂无评论,点我抢沙发吧