Les opérations bit à bit permettent de manipuler les valeurs binaires directement, c’est-à-dire bit par bit. Elles sont très utilisées en informatique bas niveau, mais aussi dans des situations concrètes comme :
Chaque entier est représenté par une suite de bits (0 ou 1). Les opérations bit à bit comparent ou modifient ces bits individuellement.
Exemple :
# Représentation binaire
x = 5 # 0b0101
y = 3 # 0b0011
| Opération | Symbole | Effet | Exemple |
|---|---|---|---|
| ET logique | & | 1 si les deux bits sont à 1 | 0b0101 & 0b0011 = 0b0001 |
| OU logique | | | 1 si au moins un des deux bits est à 1 | 0b0101 | 0b0011 = 0b0111 |
| OU exclusif (XOR) | ^ | 1 si un seul des deux bits est à 1 | 0b0101 ^ 0b0011 = 0b0110 |
| NON logique | ~ | Inverse tous les bits (complément à deux) | ~0b00000000 = 0b11111111 |
| Décalage à gauche | << | Décale les bits vers la gauche (multiplie) | 0b00000001 << 1 = 0b00000010 |
| Décalage à droite | >> | Décale les bits vers la droite (divise) | 0b00000100 >> 1 = 0b00000010 |
Un nombre entier peut être affiché en binaire avec la fonction format(n, '08b'), qui affiche le nombre sur 8 bits. Exemple :
etat = 0b00000110
print(format(etat, '08b')) # Affiche 00000110
Supposons qu’un programme stocke plusieurs options dans un seul octet. Chaque bit représente une option activée (1) ou désactivée (0).
Bit 0 : Son activé
Bit 1 : Bluetooth activé
Bit 2 : Wi-Fi activé
Bit 3 : Mode avion activé
Bit 4 : Notifications activées
etat = 0b00000110 # Wi-Fi et Bluetooth activés
wifi = 0b00000100
if etat & wifi:
print("Wi-Fi activé")
etat |= 0b00001000 # Active le bit 3
etat &= ~0b00000010 # Met le bit 1 à 0
etat ^= 0b00000100 # Si le Wi-Fi était activé, il est désactivé, et inversement
&, |, ^, ~, <<, >>Ces notions sont utiles en algorithmique, en électronique, et dans tous les systèmes où l’optimisation mémoire et la vitesse d'exécution sont importantes.