您的位置:首页 > 其它

华为OJ(求最大连续bit数)

2015-08-16 17:07 357 查看
题目:求最大连续bit数

描述
功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1

输入: 一个byte型的数字

输出: 无

返回: 对应的二进制数字中1的最大连续数

知识点位运算
运行时间限制10M
内存限制128
输入输入一个byte数字
输出输出转成二进制之后连续1的个数
样例输入3
样例输出2
感觉代码应该还有改进的空间,testbits没必要右移至0

#include<iostream>
using namespace std;
int main()
{
int number,flag=1,max=0,cnt=0;
unsigned int testbits=1;
cin>>number;
while(testbits)
{
if(number&testbits)
{
if(flag)
cnt++;
else
cnt=0;
if(cnt>max)
max=cnt;
flag=1;
}
else
flag=0;
testbits=testbits<<1;
}
cout<<max<<endl;
//system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: