ビット単位コード「$ N&($ N - 1)」何をしないのですか?
-
20-09-2019 - |
質問
このコードは何を意味し、他の方法何ビットシフトを使用せずに同じことを達成する?
んif ($n & ($n - 1))
解決
かどうかをチェックhref="https://stackoverflow.com/questions/600293/how-to-check-if-a-number-is-a-power-of-2">
は式のないの2の累乗)2 のの力である。
$n
のバイナリ表現に設定された複数の「1」ビットが存在するか否かを確認するために、テストチェックを別の言い方をします。ゼロまたは1ビットだけのセットがあれば、あなたのテストはfalseになります。
これは、はるかにその特性を決定するための最も効率的な方法です。
他のヒント
まず、このコードは、有効なPHPですので、あなたのタイトルが悪います。
第二には、起こってバイナリ算術は次のようになります。
42 = 101010
&
41 = 101001
-----------
40 = 101000
グレッグ枚この2数の電源をチェックする最速の方法がありますが、数が2ののないパワーのであるかどうかを確認するためにチェックを与えてくれたコードで述べています。これは、簡単にPHPの方針によって確認することができます任意の非ヌル/非ゼロ値はtrueです。
。所属していません StackOverflow