Le langage C dispose d'opérateurs permettant de tester, modifier et effectuer des opérations au niveau du bit. Ces opérations sont souvent réservées à des utilisations restreintes, alors qu'elles sont ultra-rapides et ont des applications quelques fois insoupçonnées. Une restriction toutefois est que ces opérateurs ne s'appliquent qu'à des entiers (la plupart du temps non signés).
1. Commençons avec des choses simples
Les opérateurs de manipulation de bits du langage C sont les suivants :
- a & b renvoie un entier dont les seuls bits à 1 sont ceux qui étaient à 1 à la fois dans a et b,
- a | b renvoie un entier dont les seuls bits à 0 sont ceux qui étaient à 0 à la fois dans a et b,
- a ^ b renvoie un entier dont les seuls bits à 1 sont ceux qui étaient différents dans a et b,
- a >> n renvoie un entier dont la représentation binaire est celle de a décalée de n bits vers la droite. Cela revient à une division entière par 2n,
- a << n renvoie un entier dont la représentation binaire est celle de a décalée de n bits vers la gauche. Cela revient à une multiplication par 2n,
- ~a renvoie un entier où tous les bits à 1 de a sont mis à 0 et inversement. On appelle cela le complément à 1, car a+~a+1=0 (en négligeant la retenue). À ne pas confondre avec -, qui réalise un complément à 2. -a est donc en fait ~a+1.
Une...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première