# Opérateurs bit-à-bit Les opérateurs bit-à-bit travaillent sur chacun des bits des opérandes. ## Inversion bit-à-bit L'opérateur `~` retourne 0 pour un bit à 1 et 1 pour un bit à 0. C'est un opérateur unaire v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 -----|----:|--:|--:|--:|--:|--:|--:|--:|--: a | 73 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 ~a | 182 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 ## ET bit-à-bit L'opérateur `&` retourne 1 si les deux bits de même poids sont à 1 v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 ------|--:|--:|--:|--:|--:|--:|--:|--:|--: a | 73 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 b | 15 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 a & b | 9 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 ## OU bit-à-bit L'opérateur `|` retourne 1 si l'un ou l'autre des deux bits de même poids est à 1 (ou les deux). v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 ---|--:|--:|--:|--:|--:|--:|--:|--:|--: a | 73 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 b | 15 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 a \| b | 79 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 ## OU exclusif bit-à-bit L'opérateur `^` retourne 1 si un seul des deux bits de même poids est à 1. v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 ---|--:|--:|--:|--:|--:|--:|--:|--:|--: a | 73 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 b | 15 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 a ^ b | 70 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 ## Décalage à droite Un décalage à droite revient à efectuer un division entière par 2. v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 ---|--:|--:|--:|--:|--:|--:|--:|--:|--: a | 73 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 a >> 2 | 18 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 ## Décalage à gauche Un décalage à gauche revient à efectuer une multiplication par 2. v | r | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 -------|--:|--:|--:|--:|--:|--:|--:|--:|--: a | 9 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 a << 2 | 36 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0