题解:
        求一个int类型数字对应的二进制数字中1的最大连续数

方法一:
循环位移

思路:
        位运算。
        对一个数循环右移,并在循环的过程中寻找连续1个数的最大值。

        


#include <bits/stdc++.h>

using namespace std;

int main(){
    int x;
    while(cin >> x){
        int num=0;//连续1个数
        int res=0;//维护连续1个数的最大值
        while(x){//循环
            if(x&1){
                num++;//累加连续1的个数
            }else{
                res=max(res,num);//维护最大值
                num=0;
            }
            x>>=1;
        }
        res=max(res,num);
        cout << res << endl;
    }
    return 0;
}


时间复杂度:
空间复杂度:

方法二:
除二取余法

思路:
            当数非零时,循环除二取余,在循环中寻找连续1个数的最大值。

#include <bits/stdc++.h>

using namespace std;

int main(){
    int x;
    while(cin >> x){
        int num=0;//连续1个数
        int res=0;//维护连续1个数的最大值
        while(x){//循环
            if(x%2){
                num++;//累加连续1的个数
            }else{
                res=max(res,num);//维护最大值
                num=0;
            }
            x/=2;
        }
        res=max(res,num);
        cout << res << endl;
    }
    return 0;
}



时间复杂度:
空间复杂度: