バイナリ コードは、2 進数の数値体系を使用して情報またはデータを表すシステムです。すべての値を表すのに、通常は 0 と 1 の 2 桁のみを使用します。バイナリ コードの各桁はビット (バイナリ ディジットの略) と呼ばれます。
バイナリ コードでは、各桁は 2 の累乗を表します。右端の桁から右に向かって 2 の累乗が増加します。たとえば、8 ビットのバイナリ コードでは、右端のビットは 2^0 (1) を表し、次のビットは 2^1 (2)、その次のビットは 2^2 (4) を表します。
10 進数 42 を 2 進コードで表してみましょう。 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 の位置に対応) があります。
>= 1; } return $count; } // Driver Code $number= 12; echo "Number of setbits in $number: " .countSetBits($number); ?>
Number of setbits in 12: 2
> 1); } // Driver code // get value from user $n = 123; // function calling echo "Number of setbits in $n are: ".countSetBits($n); ?>
Number of setbits in 123 are: 6
結論として、再帰的アプローチと PHP の全ビットのループの両方を使用して、整数内の設定ビット (1) をカウントできます。ループ手法では、while ループを使用して整数の各ビットを反復処理します。カウンタ変数を初期化し、数値が 0 になるまで繰り返します。ループ内で、1 とのビット単位の AND を使用して最下位ビットをチェックします。それが 1 に等しい場合、カウンターをインクリメントします。次に、数値を 1 ビット右シフトします。このプロセスは、すべてのビットがチェックされるまで続き、最終的なカウントが返されます。
再帰的アプローチの場合、整数を入力として受け取る再帰関数を定義できます。関数内では、ビットごとの AND 演算子と 1 を使用して最下位ビットをチェックします。それが 1 に等しい場合は、カウンターをインクリメントします。次に、数値を 1 ビット右シフトし、更新された数値で関数を再帰的に呼び出します。基本的なケースは数値が 0 になったときで、その時点でカウンターを返します。このアプローチでは、数値が 0 になるまでセット ビットを再帰的にカウントします。どちらのアプローチでも、セット ビットを整数でカウントする方法が提供され、プログラマの特定のニーズや好みに基づいてさまざまな実装を選択できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3