例题描述
功能: 求一个byte
数字对应的二进制数字中1
的最大连续数,例如3
的二进制为00000011
,最大连续2
个1
-
输入: 一个
byte
型的数字 -
输出: 无
-
返回: 对应的二进制数字中
1
的最大连续数
示例1:
- 输入
3
- 输出
2
解题思路
根据位运算,获取每一位的二进制值。获取第i
位的值: (n >> i) & 1
。如果1
连续,则计数累加,如果不连续,则从0
开始计数。
代码实现
#include <iostream>
using namespace std;
int main(){
int num;
while(cin >> num){
int count = 0;
int Max = 0;
while(num){
if(num & 1){ //num % 2
count++;
Max = max(count,Max);
}
else{
count = 0;
}
num >>= 1;
}
cout << Max << endl;
}
return 0;
}