如何从二进制数中计算Java中最大连续数1? 例如,用户输入一个像13这样的整数,这将在二进制1101中。 二进制数字1101有2个连续的1,所以输出应该是2. 另一个例子数字5是二进制0101,所以输出应该是1.我的程序无法正常工作,如果我输入数字439。计算二进制数中最大连续数1
Scanner scanner = new Scanner(System.in);
int numb = scanner.nextInt();
int tempCount = 0;
int count = 0;
// numb = 439 -> output 3
// numb = 13 -> output 2
// numb = 1 -> output 1
while (numb >= 1) {
if (numb % 2 != 0) {
tempCount++;
numb /= 2;
count = tempCount;
if (numb % 2 != 0) {
tempCount++;
count = tempCount;
numb /= 2;
}
}
else {
numb /= 2;
tempCount = 0;
}
}
System.out.println(count);
你是否必须实现自己的小数点 - >二进制方法?如果不是,你可以使用Integer.toBinaryString() – azro
不,我只需要一个整数并输出数字的二进制版本中有多少个连续的数字。 –
'1110111'应该是什么结果? 3或6? – weston