使用C,如何编写代码来计算1';s是输入的整数';什么是二进制形式?

使用C,如何编写代码来计算1';s是输入的整数';什么是二进制形式?,c,C,我一直在做一些家庭作业,基本上就是把输入的整数转换成二进制形式。到目前为止,我已经在将输入的整数转换为二进制数以及减少任何负数方面取得了很大的进展 然而,我遇到的问题是计算二进制代码中1的数量,并打印二进制表示中有多少个1。我试过许多来自互联网和我的书的代码示例(不是直接复制和粘贴,我试过让它适合我的需要),但到目前为止都没有用。我相信这是因为我没有关注一个具体的数字 基本上,我是C新手,非常新。在过去的两个学期中,我大部分时间都是用Java完成的,没有任何其他语言的编程经验,只是想寻求帮助。只

我一直在做一些家庭作业,基本上就是把输入的整数转换成二进制形式。到目前为止,我已经在将输入的整数转换为二进制数以及减少任何负数方面取得了很大的进展

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

基本上,我是C新手,非常新。在过去的两个学期中,我大部分时间都是用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
#包括
内部主(空)
{
int integer;//用户要输入的数字
int i,b,v;
无符号n=0;
while(v){
++n;
v&=v-1;
}
printf(“请键入十进制整数”;//提示
fflush(stdout);
scanf(“%d”,&integer);//读取一个整数
if(整数<0)
{
printf(“输入值为负!”;//如果整数小于
fflush(stdout);
return;//零,print语句
}
否则{
printf(“二进制表示:\n”,整数);
fflush(stdout);}
for(i=31;i>=0;--i)//将输入的整数转换为二进制形式的代码
{
b=整数>>i;
国际单项体育联合会(b&1){
printf(“1”);
fflush(stdout);
}
否则{
printf(“0”);
fflush(stdout);
}
}
printf(“\n”);
fflush(stdout);
printf(“二进制表示中的1的数量:%d\n”,n);
fflush(stdout);
printf(“\n”);
fflush(stdout);
返回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;
}
#包括
#包括
内部主(空){
int integer;//用户要输入的数字
inti,b,n;
无符号整数;
printf(“请键入十进制整数”;//提示
fflush(stdout);
scanf(“%d”,&integer);//读取一个整数
if(整数<0)
{
printf(“输入值为负!”;//如果整数小于
fflush(stdout);
return;//零,print语句
}
否则{
printf(“二进制表示:\n”,整数);
fflush(stdout);}
for(i=31;i>=0;--i)//将输入的整数转换为二进制形式的代码
{
b=整数>>i;
国际单项体育联合会(b&1){
printf(“1”);
fflush(stdout);
}
否则{
printf(“0”);
fflush(stdout);
}
}
printf(“\n”);
fflush(stdout);
一=0;
while(integer){++one;integer&=integer-1;}
printf(“二进制表示法中的1个数:%d\n”,个数);
fflush(stdout);
printf(“\n”);
fflush(stdout);
返回0;
}

无符号n=0;而(v){++n;v&=v-1;}
注意,这称为。您也不需要在每次
printf
之后使用
fflush
。使用fflush的原因是因为我正在将其传输到我所在学校的unix数据库,在该数据库中,教授要求我们在每次printf语句之后使用fflush。到目前为止,我使用了oldrinb的代码(在他发布它之前,我使用了one=0和while(n)。我将这个while语句放在for语句中,但这是不对的,因为现在我得到了一个常量值12作为“1的数量”.我的基本问题是,我的while语句去哪里了?如何实现它的打印输出?我是否使用printf(“%d”,one)?缩进错误-请编辑问题我已经没有问题打印输入数字的二进制表示形式。我只是想知道在哪里实现上面的while语句。出于某种原因,它会无限期地给我12的输出(以前遇到过)。我真的不知道出了什么问题。输出仍然是12。肯定是因为我在for语句中做了一些事情才这样做的。我会在搜索后几分钟回来。我已经尝试过了,它给了我正确的答案!!!?我真的将值更改回了原始值(您输入的值)这是一个多么愚蠢的错误,我完全不考虑使用整数。原谅我,总是最小的细节总是会产生很大的影响。谢谢你一直和我在一起,我的头撞到了我的桌子上。我用的不是我设定的整数值的v来代替整数……我不敢相信我有answer一直在使用,但愚蠢到使用了不同的变量!