0

基本的に、入力された整数をバイナリ形式に変換するだけで宿題をしています。これまでのところ、入力された整数を 2 進数に変換すること、および負の数を拒否することについて、大きな進歩を遂げてきました。

しかし、私が抱えている問題は、バイナリ コード内の 1 の数を数え、バイナリ表現に含まれる 1 の数を出力することです。私はインターネットと私の本からコードの多くの例を試しました(直接コピーして貼り付けるのではなく、自分のニーズに合わせようとしました)が、これまでのところ役に立たなかった. 特定の数字に焦点を当てていないことが原因だと思います。

基本的に、私はCが初めてで、非常に新しいです。私は過去 2 学期のほとんどを Java で過ごしており、他の言語でのプログラミング経験はなく、助けを求めているだけです。質問を繰り返すだけです:

入力されたバイナリ表現の 1 の数を数えるにはどうすればよいですか?

例: 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 に答える