基本的に、入力された整数をバイナリ形式に変換するだけで宿題をしています。これまでのところ、入力された整数を 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