Question

Qu'est-ce que ce code signifie et quelles sont les autres méthodes produisent le même sans utiliser un décalage de bits?

if ($n & ($n - 1))
Était-ce utile?

La solution

Cette formule vérifie si une nombre est une puissance de 2 (si votre condition écrit est vrai, alors le nombre est pas une puissance de deux).

A déclaré une autre façon, vos chèques de test pour voir s'il y a plus d'un bit « 1 » situé dans la représentation binaire de $n. S'il est égal à zéro ou un seul bit, votre test sera faux.

Il est de loin le moyen le plus efficace pour déterminer cette propriété.

Autres conseils

Tout d'abord, ce code est valide PHP, votre titre est pauvre.

En second lieu, l'arithmétique binaire en cours ressemble à quelque chose comme ceci:

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

Comme Greg affirme ceci est le meilleur moyen de vérifier une puissance de 2 numéro, mais le code que vous avez donné des contrôles pour voir si le nombre est pas une puissance de 2 . Cela peut facilement être déterminée par la politique de PHP:. Une non-nulle / valeur non nulle est vrai

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top