华为机试-求最大连续bit数
题目描述
功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数
输入描述:
输入一个byte数字
输出描述:
输出转成二进制之后连续1的个数
示例1
输入
3
输出
2
程序实现
- import java.util.Scanner;
- /**
- * 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
- *
- * 输入: 一个byte型的数字
- *
- * 输出: 无
- *
- * 返回: 对应的二进制数字中1的最大连续数 输入描述: 输入一个byte数字 输出描述: 输出转成二进制之后连续1的个数 示例1 输入
- *
- * 3 输出
- *
- * 2
- *
- */
- public class Main {
- public static void main(String[] args) {
- @SuppressWarnings("resource")
- Scanner scanner = new Scanner(System.in);
- while (scanner.hasNext()) {
- int num = scanner.nextInt();
- int result = checkMax(num);
- System.out.println(result);
- }
- }
- private static int checkMax(int num) {
- int count = 0;
- boolean start = false;
- int current = 0;
- int flag = 1;
- while (flag != 0) {
- if ((num & flag) != 0) {
- if (!start) {
- start = true;
- current = 1;
- } else {
- current++;
- }
- } else {
- if (count < current) {
- count = current;
- }
- current = 0;
- start = false;
- }
- flag = (flag << 1);
- }
- return count;
- }
- }
posted on 2017-07-13 09:08 WenjieWangFlyToWorld 阅读(153) 评论(0) 编辑 收藏 举报