Jouons avec les bits

Spécialité(s)


Résumé

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...

Cet article est réservé aux abonnés. Il vous reste 92% à découvrir.
S'abonner à Connect
  • 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
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous