基础编程题之最大连续bit数(位运算)
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础编程题之最大连续bit数(位运算)相关的知识,希望对你有一定的参考价值。
题目
这道题涉及到的也是位运算,具体思路就是,定义一个count,定义一个max,从右向左依次扫描这个数的二进制位,遇到1就count++,遇到0就将count置为0,并且将max和count进行比较,并把大的赋值给max
同时还有一个问题,就是如何判断一个二进制数字的某一位是0还是1,我们只需要将某个数移位然后让它和1进行与运算,如果结果为1表明此位为1,否则此位为0
using namespace std;
int main()
{
int num=0;
while(cin>>num)
{
int count=0;
int max=0;
while(num)
{
if(num&1)
{
count++;
}
else
{
if(count>max)
{
max=count;
}
count=0;
}
num=num>>1;
}
cout<<max<<endl;
}
return 0;
}
这样提交后,通过率为一半
其中200的二进制位为1100 1000,可以发现在最后一次结束时,由于没有遇到最后一位的0,所以没有进入循环,因此max没有被更新,所以判断代码换到上一个if分支中即可
using namespace std;
int main()
{
int num=0;
while(cin>>num)
{
int count=0;
int max=0;
while(num)
{
if(num&1)
{
if(count>max)
{
max=count;
}
count++;
}
else
{
count=0;
}
num=num>>1;
}
cout<<max<<endl;
}
return 0;
}
以上是关于基础编程题之最大连续bit数(位运算)的主要内容,如果未能解决你的问题,请参考以下文章