forループまたはwhileループを使用せずに、0xFFより大きい定数を使用せずに、Cの32ビット整数xの1の数を数える最も良い方法は何ですか?整数の1の数を数えるC
私が考えたのは、x24を右にシフトし、シフトされた整数に何個の1を数え、それを変数カウントで格納するかです。次に、x 16を右にシフトし、シフトされた整数の1の数だけカウントを増やします。
ので、よりよい解決策の任意のアイデア?
forループまたはwhileループを使用せずに、0xFFより大きい定数を使用せずに、Cの32ビット整数xの1の数を数える最も良い方法は何ですか?整数の1の数を数えるC
私が考えたのは、x24を右にシフトし、シフトされた整数に何個の1を数え、それを変数カウントで格納するかです。次に、x 16を右にシフトし、シフトされた整数の1の数だけカウントを増やします。
ので、よりよい解決策の任意のアイデア?
コードが重くすなわちポータブルでない、実装定義された動作に依存しています。また、<25ビットの 'int'を持つプラットフォームでは、あまりにも大きなシフトカウントに対して未定義の動作を呼び出すことができます。符号付き整数のシフトも問題です。サインビットが含まれていないことを保証できない限り、避けてください(つまり、これを回避するだけです)。 – Olaf
1の数によると、数値または基数のバイナリ表現を意味します。 – Mitchel0022
バイナリ表現の数は –