Nous allons parler ici des opérations binaire, ( non, c’est vrai ?! 😛 ) et avant cela il faut bien entendu connaître la syntaxe binaire.
Les opérateurs binaires :
Voici les différents opérateurs binaires :
Le OU, décomposé en deux possibilités, le OU bit-à-bit, ou le OU bit-à-bit exclusif ( respectivement le OR ou le XOR)
Le ET bit-à-bit ( le AND)
Le OU bit-à-bit, compare 2 bits du même poids (rang), et retourne 1 si :
- un des deux bits comparés est a 1.
- les deux bits comparés sont a 1.
Le OU bit-à-bit exclusif, quant à lui, retourne 1 seulement si un des deux bits comparés est à 1, et retourne 0 si les deux bits sont égaux.
Le ET bit-à-bit retourne 1 dans un seul cas : si les deux bits comparés sont a 1. Sinon, le ET retourne 0.
Exemple en langage de programmation (en C ):
En C, le OU bit-à-bit s’écrit « | » : 10 | 6 = 14
, voyons ça de plus près; 10 équivaut à 1010 en binaire, et 6 à 0110. On compare tout les bits de même rang,
1 OU 0 = 1, 0 OU 1 = 1, 1 OU 1 = 1, 0 OU 0 = 0, donc le résultat donne 1110, qui équivaut à 14 en décimal !
Le OU bit-à-bit exclusif s’écrit « ^ » : 10 ^ 6 = 12,
on procède de la même manière qu’au dessus, sauf que le OU exclusif entre 1 et 1 retourne 0. Donc le résultat est 1100, soit 12.
Tandis que le ET bit-à-bit s’écrit « & » : 10 & 6 = 2
, car nous avons seulement un cas ou les bits comparés sont a 1, donc on obtient 0010, soit 2 en décimal.
Les autre opérations :
Il existe d’autres opérations, pour lesquelles je vais donner la syntaxe en langage C, et qui peuvent être pratiques :
- Les opérateurs de décalage :
Un opérateur de décalage permet de « translater » un bloc de bits depuis une position à une position + n. Plus clairement, cela consiste à décaler vers la gauche ou la droite, notre bloc de bits. Exemple :
Décalage de 2 bits vers la gauche sur le nombre 146: 146 << 2
= 10010010 << 2 = 1001001000, donc cela donne 584 ( décalage de 2 bits revient donc à multiplier par 4 !)
Décalage de 3 bits vers la droite sur le nombre 151 : 151 >> 3
= 10010111 >> 3 = 10010, donc cela donne 18 ( ici le décalage de 3 bits vers la droite revient donc à diviser par 8)
On multiplie ou on divise par 2^n un nombre, n étant le nombre de bits décalés, avec respectivement le décalage vers la gauche ou vers la droite.
- Les opérateurs de complément :
L’opérateur de complément « ~ » permet tout simplement d’inverser les bits dans un nombre.
Exemple : 12 = 1100 , donc ~12
= 0011, soit 3
Dans beaucoup de cas ces opérations peuvent être pratiques, pour calculer un masque de sous réseau inversé, mettre en place un système de couleur dans un programme ( avec le rouge, le vert et le bleu, chacun codés sur 1 octet), pour faire des manipulations de la mémoire, etc …
Merci pour le petit rappel de cours 🙂
Des notions que j’avais oubliées depuis bien longtemps héhé