Opération bit à bit

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En logique, une opération bit à bit est un calcul manipulant les données directement au niveau des bits, selon une arithmétique booléenne. Elles sont utiles dès qu'il s'agit de manipuler les données à bas niveau : codages, couches basses du réseau (par exemple TCP/IP), cryptographie, où elles permettent également les opérations sur les corps finis de caractéristique 2.

Les opérations bit à bit courantes comprennent des opérations logiques bit par bit, et des opérations de décalage des bits, vers la droite ou vers la gauche.

Opérateurs[modifier | modifier le code]

NOT[modifier | modifier le code]

Représente la négation logique, le complément d'une expression. Chaque bit est inversé.

Par exemple, NOT 7 = 8 :

NOT 0111
  = 1000

AND[modifier | modifier le code]

Le et logique de deux expressions.

Ex : 5 AND 3 = 1 :

    0101
AND 0011
  = 0001

OR[modifier | modifier le code]

Le ou logique de deux expressions.

Ex : 5 OR 3 = 7 :

   0101
OR 0011
 = 0111

XOR[modifier | modifier le code]

Le ou exclusif de deux expressions.

Ex : 5 XOR 3 = 6 :

    0101
XOR 0011
  = 0110

Décalages de bit[modifier | modifier le code]

Tout comme en base décimale un décalage à gauche représente une multiplication par 10, en base binaire, un décalage à gauche correspond à une multiplication par 2. A contrario, le décalage à droite représente une division dans les mêmes proportions.

Décalage logique[modifier | modifier le code]

Un décalage logique consiste à supprimer un bit d'un coté du vecteur pour le remplacer par un zéro de l'autre coté.

Décalage à gauche[modifier | modifier le code]

Décalage de bit à gauche.
   00010111 (+23) LEFT-SHIFT
=  00101110 (+46)

On note que sur une architecture de taille figée, le bit de poids fort peut être perdu, et donc le résultat incorrect si l'on souhaitait réaliser une multiplication par deux.

Décalage à droite[modifier | modifier le code]

Décalage de bit à droite.
   00010111 (+23) RIGHT-SHIFT
=  00001011 (+11)

Décalage arithmétique[modifier | modifier le code]

Un décalage arithmétique prend en compte le bit de signe lors d'un décalage à droite pour permettre un calcul correct pour la division par deux sur les nombres négatifs codés en complément à 2. Ainsi, un décalage arithmétique à droite d'un nombre commençant par le bit 0 (nombre positif) se comportera comme un décalage logique, tandis que pour un nombre commençant par le bit 1 (nombre négatif), on insèrera un 1 au lieu du 0. Le décalage à gauche se comporte comme un décalage logique.

Articles liés[modifier | modifier le code]