题目ID:36910求最大连续bit数
链接:https://www.nowcoder.com/practice/4b1658fd8ffffb4217bc3b7e85a38cfaf2?tpId=37&&tqId=21309&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking【题目解析】:
这道题考察位运算
【解题思路】:
根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则计数累加,如果不连续,则从0开始计数。
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int maxcount=0,count=0;
while(n)//32位依次比较
{
if(n&1)
{
++count;
maxcount = max(count,maxcount);
}
else
{
count = 0;//如果出现0,则将计数器的值重新赋值0
}
n>>=1;//向右移动一位继续判断
}
cout<<maxcount<<endl;
}
return 0;
}