我想重申一个事实,即我不是要求直接为我的问题提供代码,而是想要有关如何达到该解决方案的信息。
我之前问过一个关于在二进制代码中计算特定整数的问题。现在我想问一下如何计算二进制代码中的最大块长度。
老实说,我只想知道从哪里开始以及通过编写代码来计算输入整数二进制表示的“最大块长度”的确切含义。
例如:输入 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