ホームページ > バックエンド開発 > PHPチュートリアル > PHPでバイナリアルゴリズムをカウントする方法

PHPでバイナリアルゴリズムをカウントする方法

php中世界最好的语言
リリース: 2023-03-23 14:56:02
オリジナル
2017 人が閲覧しました

今回は、PHP でバイナリ アルゴリズムをカウントする方法と、PHP でバイナリ アルゴリズムをカウントする際の 注意事項 を​​説明します。実際のケースを見てみましょう。

PHPでバイナリの1の数を数えるアルゴリズムを実装するにはどうすればよいですか?この記事では、バイナリの数値 1 の統計アルゴリズムを実装する PHP のサンプル コードを紹介します。ぜひご覧ください。

質問

10 進数

整数を入力し、この数値を 2 進数で表現した 1 の数を出力します。負の数は 2 の補数で表現されます。

ソリューションのアイデア

ビット操作についての質問です。 解決策 1: ビット単位の AND 演算を使用して、各ビットと 1 の AND を計算して 1 の数を見つけることができます。
解決策 2 (最適な解決策): 賢い方法です。0 ではない 2 進数には、少なくとも 1 つのビットが 1 なければなりません。この数を 1 減らすと、最後の 1 ビットが 0 になり、次のビットが 0 になります。すべての 0 が 1 になります。たとえば、10100 は 1 を引くと 10011 になります。次に、元の数値 10100 と 10011 を AND 演算すると、10000 が得られます。つまり、この演算により 1 を 0 に変えることができるので、2 進数は何回変換できることになります。これを行う操作は 1 つあります。

実装コード

//解法一
function NumberOf1($n)
{
 $count = 0;
  $flag = 1;
  while ($flag != 0) {
   if (($n & $flag) != 0) {
    $count++;
   }
   $flag = $flag << 1;
  }
  return $count;
}
ログイン後にコピー
// 解法二
function NumberOf1($n)
{
 $count = 0;
 if($n < 0){ // 处理负数
   $n = $n&0x7FFFFFFF;
   ++$count;
 }
 while($n != 0){
  $count++;
  $n = $n & ($n-1);
 }
 return $count;
}
ログイン後にコピー
//测试
$num=45;
echo $num."的二进制是".decbin($num)."<br/>";
echo $num."共有".NumberOf1($num)."个1";
ログイン後にコピー
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

PHP でのコールバック関数の使用方法の詳細な説明

PHP での file_put_contents 関数の使用方法

以上がPHPでバイナリアルゴリズムをカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート