描述
求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。本题含有多组样例输入。
输入描述:输入一个byte数字
输出描述:输出转成二进制之后连续1的个数
示例1
输入:
3
5
输出:
2
1
说明:
3的二进制表示是11,最多有2个连续的1。
5的二进制表示是101,最多只有1个连续的1。
注意题目中是连续的bit数,只要有一位出现了0,那么count就重新开始计数,在计数的过程中保留最大的连续出现的bit数。使用与& 1 操作来判断当前位置是否为1,或者 & t t指的例如10 100 1000 等二进制数。
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int cnt=0,ans=0;
while(n)
{
if(n&1)
{
cnt++;
ans=max(cnt,ans);
}
else cnt=0;
n>>=1;
}
cout<<ans<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int t=1;
int cnt=0,ans=0;
while(t)
{
if(n&t)
{
cnt++;
ans=max(cnt,ans);
}
else cnt=0;
t<<=1;
}
cout<<ans<<endl;
}
return 0;
}