Ne yapar bit kodu "$ n &

2 Cevap php

Ne bu kod anlama ve başka yolları bit kaydırma kullanmadan aynı başarmak nelerdir?

if ($n & ($n - 1))

2 Cevap

Bu formül checks to see whether a number is a power of 2 (yazılı olarak koşul doğruysa, o zaman iki numaralı not bir güçtür).

Başka bir şekilde ifade, kendi test eder $n ikili gösterimi belirlenen birden fazla "1" bit olup olmadığını görmek için. Sıfır ya da sadece bir bit kümesi varsa, o zaman test yanlış olacaktır.

Bu kadar bu özelliği belirlemek için en etkili yoldur.

Öncelikle, bu kod geçerli PHP, böylece başlık kötüdür.

İkincisi, devam ikili aritmetik şöyle:

42 = 101010
   &
41 = 101001
-----------
40 = 101000

Greg devletler gibi bu 2 sayının bir gücü kontrol etmek için en hızlı yoldur, ancak sayı olup olmadığını görmek için denetler verdiğim kodu not a power of 2. Bu kolayca PHP'nin politikası ile tespit edilebilir: Herhangi non-null/non-zero değeri doğrudur.