0

我一直在做一些功课,基本上只是将输入的整数转换为二进制形式。到目前为止,我在将输入的整数转换为二进制数以及拒绝任何负数方面取得了很大进展。

然而,我遇到的问题是计算二进制代码中 1 的数量并打印二进制表示中有多少个。我已经尝试了许多来自互联网和我的书的代码示例(不是直接复制和粘贴,我已经尝试过适合我的需要)但到目前为止都无济于事。我相信这是因为我没有关注特定的数字。

基本上,我是 C 的新手,非常新。我过去 2 个学期的大部分时间都是用 Java 完成的,并且没有任何其他语言的编程经验,只是想寻求帮助。只是为了重申这个问题:

如何计算输入的二进制表示中的个数?

示例:输入 44,二进制为 101100 1 的个数:3

编辑:到目前为止,对于已实现的代码,我现在的新问题是无论我输入什么整数,输出仍然是 12。

#include <stdio.h>

int main(void)
{
     int integer; // number to be entered by user
     int i, b, v;
     unsigned n = 0;
     while(v) {
        ++n;
        v &= v - 1;
      }
     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);}

  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);
     printf("Number of 1's in Binary Representation:%d\n", n);
     fflush(stdout);
     printf("\n");
     fflush(stdout);
     return 0;

}//end function main
4

1 回答 1

0

编辑:在这里使用它:

ones = 0;
while (integer) { ++ones; integer &= integer - 1; } 
printf("Number of 1's in Binary Representation: %d\n",ones);
fflush(stdout);

并首先声明:

unsigned int ones;

完整代码:

#include <stdio.h>
#include <stdlib.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);}

     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;
    while (integer) { ++ones; integer &= integer - 1; } 
    printf("Number of 1's in Binary Representation: %d\n",ones);
    fflush(stdout);
    printf("\n");
    fflush(stdout);
    return 0;
}
于 2012-09-11T23:49:31.977 回答