<< (décalage de bits vers la gauche)
Description :
L’opérateur de décalage à gauche << provoque le décalage des bits de l’opérande gauche vers la gauche du nombre de positions spécifié par l’opérande droit.
Syntaxe :
variable << number_of_bits;
Paramètres :
variable : Types de données autorisés: int, byte, long.
number_of_bits : un numéro qui est < = 32. Types de données autorisés: int.
Exemple de code :
int a = 5; // binary: 0000000000000101 int b = a << 3; // binary: 0000000000101000, ou 40 en décimal
Remarques et avertissements :
Lorsque vous décalez une valeur x de y bits (x << y), les y bits les plus à gauche de x sont perdus, littéralement décalés hors d’existence :
int x = 5; // binary: 0000000000000101 int y = 14; int result = x << y; // binary: 0100000000000000 - le premier 1 dans 101 a été rejeté
Si vous êtes certain qu’aucun des 1 d’une valeur n’est en train d’être omis, l’opérateur de décalage à gauche consiste à multiplier l’opérande de gauche par 2 élevé à la puissance de l’opérande de droite. Par exemple, pour générer des puissances de 2, les expressions suivantes peuvent être utilisées :
Opération | Résultat |
---|---|
1 << 0 | 1 |
1 << 1 | 2 |
1 << 2 | 4 |
1 << 3 | 8 |
… | … |
1 << 8 | 256 |
1 << 9 | 512 |
1 << 10 | 1024 |
… | … |
L’exemple suivant peut être utilisé pour imprimer la valeur d’un octet reçu sur le moniteur série, en utilisant l’opérateur de décalage vers la gauche pour se déplacer le long de l’octet du bas (LSB) vers le haut (MSB) et imprimer sa valeur binaire :
// Imprime la valeur binaire (1 ou 0) d'octet void printOut1(int c) { for (int bits = 7; bits > -1; bits--) { // Comparer les bits 7-0 en octet if (c & (1 << bits)) { Serial.print("1"); } else { Serial.print("0"); } } }
Source : https://docs.arduino.cc/language-reference/en/structure/bitwise-operators/bitshiftLeft/