質問

このコードは何を意味し、他の方法何ビットシフトを使用せずに同じことを達成する?

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です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top