セットビットを数えるということは、指定された整数の 1 を数えるということです。このために、適用できるさまざまなソリューションをご用意しています。この場合、2 進数 (整数の 2 進表現) があり、文字列内の 1 の数をカウントする必要があります。
1 の数を数えるには、文字列を取得し、各要素を反復処理して、文字列内のすべての 1 の数を数えます。たとえば、17 を入力すると、17 のバイナリ表現は 10001 であり、1 が 2 つ含まれるため、出力は 2 になります。
Input: Enter a positive integer: 6 Output: 2
6 のバイナリ表現は 110 で、これには 2 つのビットが設定されています。
この反復方法では、ビットごとに 1 回の反復が必要です。数字のすべての桁に実行されます。ビットが設定されなくなると反復は終了します。最悪の場合、最上位ビットのみが設定された 32 ビット ワードに対して 32 回ループします。この解決策は最も単純な解決策であり、1 がまばらで最下位ビットにある場合に役立ちます。
#include <stdio.h> int main(void) { unsigned int n = 34; for (c = 0; n; n >>= 1) { c += n & 1; } printf("%d\n", c); }
以上がC/C++ プログラム: 整数に設定された桁数を数えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。