バイナリ コードは、2 進数の記数法を使用して情報またはデータを表すシステムです。すべての値を表すのに、通常は 0 と 1 の 2 桁のみを使用します。バイナリ コードの各桁はビット (バイナリ ディジットの略) と呼ばれます。
バイナリ コードでは、各桁は 2 の累乗を表します。右端の桁から始めて、2 の累乗は右から左に増加します。たとえば、8 ビットのバイナリ コードでは、右端のビットは 2^0 (1) を表し、次のビットは 2^1 (2)、その次のビットは 2^2 (4) を表します。
10 進数 42 をバイナリ コードで表してみましょう。 42 を 2 進数に変換するには、それを 2 で割り、商がゼロになるまで余りを追跡します。
段階的なプロセスは次のとおりです。
ステップ 1
42 ÷ 2 = 21、余り 0
ステップ 2
21 ÷ 2 = 10、余り 1
ステップ 3
10 ÷ 2 = 5、余り 0
ステップ 4
5 ÷ 2 = 2、余り 1
ステップ 5
2 ÷ 2 = 1、余り 0
ステップ 6
1 ÷ 2 = 0、余り 1
バイナリ表現を取得するには、下 (最後の剰余) から開始して、剰余を下から上に読み取ります。
42 のバイナリ コードは次のとおりです: 101010
つまり、10 進数の 42 は、2 進数コードでは 101010 として表されます。
バイナリ コードの文脈では、セット ビットは、値 1 に設定される 2 進数 (ビット) を指します。一方、クリア ビットは、値 1 に設定される 2 進数を指します。 0.
例
たとえば、バイナリ コード 101010 には、3 つのセット ビット (値 1 の位置に対応) と 3 つのクリア ビット (値 0 の位置に対応) があります。
結論として、再帰的アプローチと PHP の全ビットのループの両方を使用して、整数内の設定ビット (1) をカウントできます。ループ手法では、while ループを使用して整数の各ビットを反復処理します。カウンタ変数を初期化し、数値が 0 になるまで繰り返します。ループ内で、1 とのビット単位の AND を使用して最下位ビットをチェックします。それが 1 に等しい場合、カウンターをインクリメントします。次に、数値を 1 ビット右シフトします。このプロセスは、すべてのビットがチェックされるまで続き、最終的なカウントが返されます。
再帰的アプローチの場合、整数を入力として受け取る再帰関数を定義できます。関数内では、ビットごとの AND 演算子と 1 を使用して最下位ビットをチェックします。それが 1 に等しい場合は、カウンターをインクリメントします。次に、数値を 1 ビット右シフトし、更新された数値で関数を再帰的に呼び出します。基本的なケースは数値が 0 になったときで、その時点でカウンターを返します。このアプローチでは、数値が 0 になるまでセット ビットを再帰的にカウントします。どちらのアプローチでも、セット ビットを整数でカウントする方法が提供され、プログラマの特定のニーズや好みに基づいてさまざまな実装を選択できます。
以上が整数内のセットビットを数えるPHPプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。