数字の数が2であるかどうかは2のパワーです
コードはシンプルで明確です。
メソッド2:計算アルゴリズムの数
別の方法には、ペア数の使用の計算が含まれます。ただし、これには慎重に注意が必要です。これは、浮動的な点計算が精度を引き起こす可能性があるためです。次のコードを検討してください:最適なソリューション:ビットコンピューティング方法
<code class="language-c#">private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power <<= 1) { if (power == number) return true; if (power > number) return false; } return false; }</code>より効果的なソリューションは、ビット操作の使用です。 2のパワーには一意の特性があります。(x -1)が実行され、操作(&)が実行されると、結果値は常に0です。この属性は、次のように表すことができます:
ゼロの力の候補者を排除するために、それはわずかに変更できます:
説明
位置と操作(&)によって、xおよび(x -1)のバイナリ表現の各ビットの位置を確認します。両方の場合、結果は1です。したがって、2の電力は0であり、(x -1)位置と0の計算結果があります。<code class="language-c#">private bool IsPowerOfTwo_2(ulong number) { double log = Math.Log(number, 2); double pow = Math.Pow(2, Math.Round(log)); return pow == number; }</code>
以上が数字は2のパワーですか? これを効率的に決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。