每日一题|[每日一题]61(求最大连续bit数)
题目描述 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数
输入描述: 输入一个byte数字
输出描述: 输出转成二进制之后连续1的个数
示例1
输入
3输出
2
思路
根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则计数累加, 如果不连续,则从0开始计数。
解答代码:
#include
using namespace std;
int main() {
int num;
while (cin >> num) {
int sum = 1, count = 0;
while (num) {
//获取当前位的二进制值
if (num & 1)
{
//如果1的值连续,计数累加,并且跟新最大计数
++count;
if (count > sum) {
sum = count;
}
}
else{
count = 0;
}
//右移一次,为获取下一位二进制值做准备
num = num >> 1;
/*if (num % 2) {
count++;
if (count > sum) {
sum = count;
}
}
else {
count = 0;
}
num /= 2;
*/
}
cout << sum << endl;
}return 0;
}
代码生成图:
文章图片
文章图片
【每日一题|[每日一题]61(求最大连续bit数)】如有不同见解,欢迎留言讨论~~
推荐阅读
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 有句话忍很久了,女生要求买房怎么就物质了()
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 先放下|先放下 ,求一个好心情
- https请求被提早撤回
- #2018.4.12#每日一问#+简宁+D03+我是怎样做读书笔记的
- 每日微习惯诞生|每日微习惯诞生 16/100
- 遇到不正当请求怎么办
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 保姆有偿陪伴(雇主要求过分,保姆没自尊,53岁保姆果断离职)