Utiliser des opérations au niveau du bit pour résoudre des puissances de 2

1 Que sont les opérations sur bits ?

L'opération AND au niveau du bit est un opérateur binaire, &représenté par le symbole . Il compare bit par bit les bits correspondants des deux opérandes.Seulement lorsque les deux bits correspondants sont à 1 en même temps, le bit correspondant du résultat est à 1, sinon il est à 0.

Les règles pour les opérations AND au niveau du bit sont les suivantes :

  • Si les deux bits correspondants sont à 1, le bit résultant est à 1.
  • Si un bit correspondant est 0, le bit résultat est 0.

Par exemple, supposons qu'il existe deux nombres binaires : 10101011 et 11110000. Le résultat de l’exécution d’une opération AND au niveau du bit est le suivant :

10101011

&

11110000

-----------

10100000

Par conséquent, l’opération AND au niveau du bit de 10101011 et 11110000 donne 10100000.

2 Utilisez des opérations sur bits pour résoudre intelligemment les puissances de 2

public boolean isPowerOfTwo(int n) {
    if (n > 0 && (n & (n - 1)) == 0) {
        return true;
    } else {
        return false;
    }
}

illustrer:

        Cette méthode tire parti des caractéristiques d'une puissance de 2 : après avoir soustrait 1 à une puissance de 2, le bit le plus élevé de sa représentation binaire devient 0, et les autres bits deviennent 1. Par conséquent, si un nombre nest une puissance de 2, alors le résultat de l’opération AND au niveau du bit net doit être 0.n - 1

Avis:

        Lors de l'exécution d'une opération ET au niveau du bit entre et , la partie de doit être nplacée entre parenthèses. En effet, l'opérateur ET au niveau du bit a une priorité inférieure à l'opérateur d'égalité . L'ajout de parenthèses garantit que l'opération ET au niveau du bit est effectuée avant l'opération de comparaison d'égalité.(n - 1)(n - 1)&==

Je suppose que tu aimes

Origine blog.csdn.net/m0_62567916/article/details/132091212
conseillé
Classement