繰り返しますが、問題を解決する方法に関する情報ではなく、問題の直接的なコードを求めているわけではありません。
以前、バイナリ コードで特定の整数をカウントすることについて質問しました。ここで、バイナリ コード内の最大ブロック長をカウントする方法についてお聞きしたいと思います。
正直なところ、入力された整数のバイナリ表現の「最大ブロック長」を計算するコードを記述して、どこから始めればよいのか、質問が正確に何を意味するのかを知りたいだけです。
例: 入力 456 出力: 111001000 1 の数: 4 最大ブロック長: ?
私がどこから来たのかを知る必要がある場合は、これまでの私のコードを参照してください。
#include <stdio.h>
int main(void)
{
int integer; // number to be entered by user
int i, b, n;
unsigned int ones;
printf("Please type in a decimal integer\n"); // prompt
fflush(stdout);
scanf("%d", &integer); // read an integer
if(integer < 0)
{
printf("Input value is negative!"); // if integer is less than
fflush(stdout);
return; // zero, print statement
}
else{
printf("Binary Representation:\n", integer);
fflush(stdout);} //if integer is greater than zero, print statement
for(i = 31; i >= 0; --i) //code to convert inputted integer to binary form
{
b = integer >> i;
if(b&1){
printf("1");
fflush(stdout);
}
else{
printf("0");
fflush(stdout);
}
}
printf("\n");
fflush(stdout);
ones = 0; //empty value to store how many 1's are in binary code
while(integer) //while loop to count number of 1's within binary code
{
++ones;
integer &= integer - 1;
}
printf("Number of 1's in Binary Representation: %d\n", ones); // prints number
fflush(stdout); //of ones in binary code
printf("Maximum Block Length: \n");
fflush(stdout);
printf("\n");
fflush(stdout);
return 0;
}//end function main