ホームページ  >  記事  >  バックエンド開発  >  整数内のセットビットを数えるPHPプログラム

整数内のセットビットを数えるPHPプログラム

王林
王林オリジナル
2024-08-28 12:07:181113ブラウズ

バイナリコードとは何ですか?

バイナリ コードは、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 として表されます。

Setbit とは何ですか?

バイナリ コードの文脈では、セット ビットは、値 1 に設定される 2 進数 (ビット) を指します。一方、クリア ビットは、値 1 に設定される 2 進数を指します。 0.

たとえば、バイナリ コード 101010 には、3 つのセット ビット (値 1 の位置に対応) と 3 つのクリア ビット (値 0 の位置に対応) があります。

整数内のセットビットを数える PHP プログラム

PHP Program to Count set Bits in an Integer

方法 1: 整数内のすべてのビットをループする

リーリー

出力

リーリー

方法 2: 再帰的アプローチ

リーリー

出力

リーリー

結論

結論として、再帰的アプローチと PHP の全ビットのループの両方を使用して、整数内の設定ビット (1) をカウントできます。ループ手法では、while ループを使用して整数の各ビットを反復処理します。カウンタ変数を初期化し、数値が 0 になるまで繰り返します。ループ内で、1 とのビット単位の AND を使用して最下位ビットをチェックします。それが 1 に等しい場合、カウンターをインクリメントします。次に、数値を 1 ビット右シフトします。このプロセスは、すべてのビットがチェックされるまで続き、最終的なカウントが返されます。

再帰的アプローチの場合、整数を入力として受け取る再帰関数を定義できます。関数内では、ビットごとの AND 演算子と 1 を使用して最下位ビットをチェックします。それが 1 に等しい場合は、カウンターをインクリメントします。次に、数値を 1 ビット右シフトし、更新された数値で関数を再帰的に呼び出します。基本的なケースは数値が 0 になったときで、その時点でカウンターを返します。このアプローチでは、数値が 0 になるまでセット ビットを再帰的にカウントします。どちらのアプローチでも、セット ビットを整数でカウントする方法が提供され、プログラマの特定のニーズや好みに基づいてさまざまな実装を選択できます。

以上が整数内のセットビットを数えるPHPプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。