TUTORIELS 
Utiliser les opérateurs binaires

Page 1 | 2

Ils semblent plus compliqués à comprendre que les opérateurs logiques, et leur utilité n'apparaît pas immédiatement palpable. Démonstration du contraire.
 (26 novembre 2003)
 
Les opérateurs de bits (aussi appelés "opérateurs bit à bit" ou "binaires") sont bien souvent méconnus, car ils semblent plus compliqués à comprendre que les opérateurs logiques, d'autant que leur utilité n'est pas immédiatement palpable. Utiles, ils le sont pourtant, et c'est ce que nous allons tenter de montrer dans cet article.

Qui sont-ils ?
Tous les langages modernes en disposent, et les développeurs qui ne s'y sont pas intéressés se sont sûrement demandés à quoi pouvaient servir les opérateurs &, |, >> et consorts quand les opérateurs logiques (&&, || et > par exemple) semblaient suffire largement.
Ce sont là nos fameux opérateurs de bits. Plus précisément, "opérateur de bit" désigne généralement (certains langages ont leurs spécificités) les opérateurs suivants :
& : ET
| : OU (inclusif)
^ : OU (exclusif)
~ : NON (négation unaire, ou "complément à 1")
>> : décalage à droite
<< : décalage à gauche

Il en existe d'autres (&=, >>>, ...), mais ils ne sont pas implémentés dans tous les langages.
Discutez en sur les forums

Que font-ils ?
C'est ici que les choses semblent se compliquer, mais cela reste pourtant très simple.

12 & 10 = 8

Le résultat de ce "calcul" semble incompréhensible, il faut d'abord connaître le fondement de ces opérateurs.
Comme leur nom l'indique, les opérateurs de bits "travaillent" sur les bits. La comparaison avec le opérateurs logiques s'arrête au fait que ces derniers répondent à des valeurs true ou false; les opérateurs binaires, quant à eux, travaillent avec des suites de 0 et de 1 - les nombres sont interprétés comme des opérateurs binaires.

12
1100
&
&
10
1010
=
=
8
1000

Pour ceux qui sont perdus, un tableau fera plus d'effet (voir ci-contre). Il nous faut pour expliquer ce tableau, expliquer pourquoi 12 est équivalent à 1100, 10 à 1010, et 8 à 1000 : ces secondes valeurs sont les interprétations binaires de ces chiffres, c'est à dire leur représentation sous forme de bits.

 nombre 
équivalent binaire
 0
0000
 1
0001
 2
0010
 3
0011
 4
0100
 5
0101
 6
0110
 7
0111
 8
1000
 9
1001
10
1010
11
1011
12
1100
13
1101
14
1110
15
1111

Chaque développeur devrait connaître le second tableau ci-contre par coeur.
(autre méthode pour retenir les équivalences : compter sur les doigts d'une main, un doigt baissé étant équivalent à 0, un levé à 1).
Nos opérateurs binaires convertissent donc directement, lorsque l'on fait appel à eux, les valeurs données en leurs équivalent binaire, puis font le "calcul". Quel calcul ? Chacun a sa spécialité...

L'opérateur &
Cet opérateur fait un ET bit à bit sur les valeurs données : il donne pour résultat 1 si les deux bits de même poids (à la même position) sont à 1. Les autres bits sont mis à zéro. Cela explique donc notre 12 & 10 = 8 : seuls les quatrièmes bits (les bits se lisent de droite à gauche) des équivalents binaires de 12 et 10 (1100 et 1010) sont à 1, les autres étant soit à 1 ou à 0, mais pas sur le même "emplacement". Le résultat donne donc le binaire 1000, qui correspond à 8.

Page 1 | 2

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page