Leçon 56 : Opérateurs bit à bit
Les opérateurs bit à bit travaillent sur les bits individuels (0 et 1) des types entiers. Ils sont essentiels pour la programmation de bas niveau, le chiffrement, la programmation réseau et l'optimisation du stockage.
| Opérateur | Description |
|---|---|
& | ET bit à bit (Met un bit à 1 si les deux bits correspondants sont à 1) |
| ` | ` |
^ | XOR bit à bit (Met un bit à 1 si les bits correspondants sont différents) |
~ | NON bit à bit (Inverse tous les bits : 0 devient 1, 1 devient 0) |
<< | Décalage à gauche (Décale les bits vers la gauche, remplit à droite par des 0) |
>> | Décalage à droite (Décale les bits vers la droite) |
Utilisation pratique : Définir, Effacer et Inverser des bits
Supposons un entier de 8 bits nommé drapeaux (flags).
1. Définir un bit (Utilisation du OU |)
Pour s'assurer que le 3ème bit (index 2) est à 1, quel que soit son état actuel :
c unsigned char drapeaux = 0b00100000; // Exemple valeur 32 unsigned char MASQUE = 0b00000100; // Masque pour le bit 2 (valeur 4)
// Définir le bit 2 (32 | 4 = 36) drapeaux = drapeaux | MASQUE;
2. Effacer un bit (Utilisation du ET & avec le NON ~)
Pour s'assurer que le 5ème bit (index 4) est à 0 :
c unsigned char drapeaux = 0b00110000; // Exemple valeur 48 unsigned char MASQUE = 0b00010000; // Masque pour le bit 4 (valeur 16)
// Effacer le bit 4 (48 & ~16 = 32) drapeaux = drapeaux & (~MASQUE);
3. Décalage de bits
Le décalage à gauche (<<) équivaut à multiplier par des puissances de 2 (si aucun débordement ne se produit).
c int x = 5; // 00000101 int y = x << 2; // 00010100 (20). Car 5 * 2^2 = 20.