Puissance 2 en C++
Bonjour,
comment savoir si un entier est une puissance de 2 avec C++, sans faire de boucle, juste avec les opérateurs:
+ - * / % et manipulation de bit ~ ^ | & >> << ...
merci de votre aide
comment savoir si un entier est une puissance de 2 avec C++, sans faire de boucle, juste avec les opérateurs:
+ - * / % et manipulation de bit ~ ^ | & >> << ...
merci de votre aide
Configuration: Windows XP Firefox 2.0.0.14 gcc 3.4.5
8 réponses
-
Résumé :
if( ((x&(x-1)) != 0) || (x == 0) ) //pas puissance de deux else //puissance de deux
Ou bien :
if( (((x & -x) xor x) == 0) && (x != 0) ){ //x est puissance de 2 }else{ //x n'est pas puissance de 2 }
Ou encore :
if( ((x ^ (x-1)) == x+(x-1)) && (x != 0) )
printf("x puissance de 2");
Le tout testé jusqu'à 2^13