基础知识点:
1.判断2的幂 n&(n-1)==0
2.每次减一处理 n&(n-1)
3.判断出现1次次数的数 x^0==x,x^x==0,a^b=c则a=b^c,b=a^c
力扣练习题:
            
            
              cpp
              
              
            
          
          class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int result=0;
        for(int i=0;i<nums.size();i++)
        {
            result^=nums[i];
        }
        return result;
    }
};
            
            
              cpp
              
              
            
          
          class Solution {
public:
    int hammingWeight(uint32_t n) {
        int ret = 0;
        for (int i = 0; i < 32; i++) {
            if (n & (1 << i)) {
                ret++;
            }
        }
        return ret;
    }
};或者直接调用函数(return __builtin_popcount(n);)
            
            
              cpp
              
              
            
          
          class Solution {
public:
    bool isPowerOfTwo(int n) {
        return (n>0) && (n & (n-1))==0 ;
    }
};
            
            
              cpp
              
              
            
          
          class Solution {
public:
    bool isPowerOfFour(int n) {
        if(n>0 && (n&(n-1))==0 && n%3==1)
        {
            return true;
        }
        else return false;
    }
};
            
            
              cpp
              
              
            
          
          class Solution {
public:
    int findComplement(int num) {
        //a^b=c a=b^c 已知a和b位相反 所以先求出c=111............
        int num1=1;
        while(num1<num)
        {
            num1<<=1,num1++;
        }//找到比num大全为1的数 
        return num1^num;
    }
};