/ / Savoir si un nombre est une puissance de 2 en utilisant des opérateurs au niveau du bit [O (1)] - octet, manipulation du bit, bit, opérateurs au niveau du bit

Déterminer si un nombre est une puissance de 2 en utilisant des opérateurs au niveau du bit [O (1)] - octet, manipulation du bit, bit, opérateurs du bit

Hey j'ai une petite question:

Comment savoir si un int est un puissance de 2 (1 seul bit positif) en utilisant des opérateurs binaires, en O (1) sans aucun SI déclarations ou tout autre type de BOOLÉAN expression?

La méthode doit renvoyer une valeur entière.

La méthode peut retourner un certain nombre que vouspeut décider que cela signifie une puissance de 2 et un autre nombre qui signifie que ce n'est pas une puissance de 2. [Dire un nombre négatif signifie X et positif signifie que Y est également autorisé]

Également vous ne pouvez pas compter sur le fait qu'un int a 32 bits.

C'est une question qui m'a été posée lors d'une interview.

Réponses:

4 pour la réponse № 1

Si la soustraction est acceptable, vous pouvez simplement utiliser x & (x - 1), ce qui donne 0 pour une puissance de 2 et> 0 sinon. Si cela doit être une solution purement au niveau du bit, alors vous devrez implémenter la - 1 Avec les opérateurs au niveau du bit de la manière habituelle pour deux "s complément arithmétique.