Opération bit à bit

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
image illustrant l’informatique
Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

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, sur 4 bits, 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épassement de capacité). De plus, si le complément à deux est utilisé pour représenter les nombres négatifs, le bit de signe peur être altéré, donnant un résultat de signe opposé à l'opérande :

   10110111 (-73) LEFT-SHIFT
=  01101110 (+110)

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. On aura ainsi le comportement suivant :

   00110111 (+55) RIGHT-SHIFT
=  00011011 (+27)
   10111010 (-70) RIGHT-SHIFT
=  11011101 (-35)

Articles liés[modifier | modifier le code]