Les opérateurs bit à bit en Javascript

Le 17/10/2017

Dans Développement

Aujourd'hui, le BlogDuWebdesign vous propose de vous pencher sur un des points les plus cryptiques de la syntaxe du javascript : les opérateurs binaires

Petite précision : Nous allons assez souvent parler de bit dans cet article, et je vais vous demander de ne pas faire de confusion. Nous parlons évidemment de Binary Digits, des bits informatiques qu'il ne faut pas confondre avec leurs quasi homophones bytes, qui sont un assemblage de 8 bits.

Enfin, cet article va vous demander d'être a jour sur les notions de bits, calculs binaires, etc. Si vous vous sentez un peu faible sur ces sujets, je vous conseille cet excellent lien : Bit Byte Octet ? C’est quoi un bit, un octet, un byte ?

Les opérateurs bit à bit ou opérateurs binaires

Comme leur nom l'indique plus ou moins, les opérateurs bit a bit sont des opérateurs permettant d'effectuer des transformations sur des valeurs en chiffres entiers comme s'il s'agissait de chiffres binaires.

 

Tableau

Je me doute que le tableau est un peu complique a comprendre comme ca, donc je vais essayer de vous fournir quelques exemples. Nous allons essayer quelques opérateurs sur les chiffres 5 et 7 En notation binaire, 3 s'ecrit 11, et 5 s'écrit 101. (Vous ne comprenez pas pourquoi ? Aller donc faire un tour sur cet article !)

3 | 5 //=> 7 : Si nous décidons de remplacer les chiffres par leur pendant binaire, nous obtenons 101 | 011. En gardant un 1 pour chaque position ou nous avons au moins un 1 :

1 | 0 = 1
0 | 1 = 1
1 | 1 = 1

Nous obtenons au final 111, qui correspond a 7.

Dans le même ordre d'idées, 3 & 5 //=> 1, car & donnera la valeur binaire 1 pour chaque emplacement égal à 1 sur les deux membres de l'opération. Nous obtenons donc 001, donc 1.

Pour un surplus d'explications, je vous propose de vous rendre directement sur le site du MDN

Quand les utiliser ?

Les opérateurs binaires sont certes très rapides, mais ils sont aussi très peu "évidents", entendez par là qu'il sera souvent extrêmement important de bien commenter toute portion de code les utilisant. De plus, il est presque impossible de déduire leur fonctionnement si on les connaît mal.

En conséquence, je conseille personnellement de réduire leur utilisation au maximum. Vous verrez dans certains tutoriels des personnes vous expliquer qu'il peut être possible de les utiliser pour stocker un set de flag booléen par exemple, pour accélérer un modulo, ou pour "simplifier" certaines opérations mathématiques, mais je suis personnellement opposé à ce genre d'utilisation.

Que reste t'il comme raison de les utiliser ? En javascript, je n'en vois personnellement qu'une seule : l'optimisation de Canvas en passant pas un objet de type Uint32Array, et qui sera l'objet de mon prochain article !

Connaissiez-vous déjà les opérateurs binaires ? Avez-vous d'autres situations ou vous les trouvez utiles et importants ? Dites-le en commentaire !