• leetcode:Reverse Bits


    Reverse bits of a given 32 bits unsigned integer.

    For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).

    Follow up:
    If this function is called many times, how would you optimize it?

    Related problem: Reverse Integer

    分析:题意为反转给定32位无符号整型数的位

    思路:我们只需将原整型数从右到左一个一个取出来,然后一个个加到新数的最低位中即可

    class Solution {
    public:
        uint32_t reverseBits(uint32_t n) {
            uint32_t s=0;
            for(int i=0;i<32;i++){
            if(n&1==1){
                n>>=1;
                s=(s<<=1)+1;
            }
            else{
                n>>=1;
                s=(s<<=1);
            }
          }
          return s;
        }
    };
    

    或可参考更简洁做法:

    class Solution {
    public:
    uint32_t reverseBits(uint32_t n) {
    uint32_t res = 0;
    for (int i = 0; i < 32; ++i) {
    res |= (((n >> i) & 1) << (31 - i));
    }
    return res;
    }
    };

     位运算 

    其他可参考方法:

    #include<iostream>
    using namespace std;
    
    class Solution {
    public:
        uint32_t reverseBits(uint32_t n) {
            uint32_t m=0;
            for(int i=0;i<32;i++){
                m<<=1;
                m = m|(n & 1);
                n>>=1;
            }
            return m;
        }
    };
    
    int main()
    {
        uint32_t n = 1;
        Solution sol;
        cout<<sol.reverseBits(n)<<endl;
        return 0;
    }
    

     或:

    class Solution {
      public:
        uint32_t reverseBits(uint32_t n) {
        uint32_t m = 0;
        for (int i = 0; i< 32 ; i++,n/=2)
            m = (m<<1) + (n%2);
        return m;
    }
     };
    

      

     

      

  • 相关阅读:
    SQL数据库——存储过程
    常用命令
    八大排序算法
    Java 反射的理解
    Java 集合的理解(持续更新......)
    JAVA 用数组实现 ArrayList
    JVM 运行时的内存分配
    Java中的增强 for 循环 foreach
    Java 泛型
    《七》随机访问文件流
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/4658345.html
Copyright © 2020-2023  润新知