多くの数字が2であるかどうかを判断するには、効率的で正確なアルゴリズムが必要です。この記事では、ビット操作に基づいてアルゴリズムを紹介します。 このアルゴリズムは、操作数のバイナリ表現を比較する位置と動作記号(&)を使用します。具体的には、1縮小の結果と減少の結果の結果、入力数がゼロかどうかを確認しました。数値が2の電力である場合、デュアルプルーフの最低レベルを除き、残りは0です。マイナス1の動作は最低レベルを0に変換するため、最低位置を除くすべてのビットは0になります。入力数が2の電力である場合、計算の結果はゼロになります。 たとえば、
番号4を考慮してください。2の力です。 4のバイナリは100で表されます。マイナス1は3を取得し、そのバイナリは011.100および011として表され、位置と動作の結果は000です。結果はゼロであるため、4が2のパワーであることが確認されています。このアルゴリズムは計算効率が高く、与えられた数値が2のパワーであるかどうかを確認する信頼できる方法を提供します(0を除く)。ゼロが必要な場合は、コードフラグメントの最初の行に示すように、単純な非ゼロ検査を追加するだけです。
bool IsPowerOfTwo(unsigned long long x) { return (x != 0) && ((x & (x - 1)) == 0); }
以上が数字は2のパワーですか? 少しだけアプローチの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。