Domanda

Che cosa significa questo codice significa e quali sono altri modi ottenere lo stesso risultato senza utilizzare po spostamento?

if ($n & ($n - 1))
È stato utile?

Soluzione

controlla se un numero è una potenza di 2 (se la sua condizione come scritto è vero, allora il numero è non una potenza di due).

Detto in altro modo, i vostri controlli di prova per vedere se v'è più di un "1" bit impostato nella rappresentazione binaria di $n. Se v'è zero o solo set di un bit, allora il test sarà falso.

E 'di gran lunga il modo più efficace per determinare la proprietà.

Altri suggerimenti

In primo luogo, questo codice è valido PHP, in modo che il titolo è scarsa.

In secondo luogo, l'aritmetica binaria in corso simile a questa:

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

Come Greg afferma questo è il modo più veloce per verificare la presenza di una potenza di 2 il numero, ma il codice che hai dato controlli per vedere se il numero è non è una potenza di 2 . Questo può essere facilmente accertato dalla politica di PHP di:. Qualsiasi valore diverso da zero non nullo / è vero

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top