题目
描述
功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数
输入
输入一个byte数字
输出
输出转成二进制之后连续1的个数
样例输入
3
样例输出
2
思路
- 右移
- 找连续的
- 判断是否为最长
代码
#include <iostream>
using namespace std;
int main()
{
int num,counter=0,maxNum=0;
cin>>num;
if(num < 0 || num > 255)
{
return -1;
}
while(num!=0)
{
if(num%2==1)//最后一位
{
counter++;//计数
if(counter>maxNum)//找最大
{
maxNum=counter;
}
}
else
{
counter=0;
}
num=num>>1;//右移
}
cout<<maxNum<<endl;
return 0;
}