Simulateur d'opérations binaires (AND, OR, XOR, NOT, décalage)

Calculez AND, OR, XOR, NOT, décalage à gauche et à droite sur deux nombres, et visualisez exactement quels bits ont changé sur une grille binaire. Prend en charge les largeurs de 8/16/32 bits.

Astuces d'utilisation

  • Vous pouvez saisir des valeurs en décimal, ou utiliser un préfixe hexadécimal comme `0x1A` ou binaire comme `0b1010`. Collez les valeurs telles que vous les écririez dans votre code.
  • AND, OR et XOR utilisent deux valeurs, tandis que NOT n'en utilise qu'une seule. Le nombre de champs de saisie change automatiquement selon l'opération choisie.
  • Le décalage à droite (`>>>`) ne prend en charge ici que la variante logique. Consultez la FAQ pour savoir en quoi elle diffère d'un décalage arithmétique qui conserve le bit de signe.
  • Passer la largeur en bits de 8 à 16 puis à 32 permet de voir le même nombre gagner davantage de zéros en tête, ce qui aide à comprendre ce que signifie réellement la « largeur en bits ».
  • Les bits surlignés en jaune sont ceux qui ont changé entre A et le résultat : avec AND/OR, on peut ainsi suivre visuellement quelle valeur d'entrée l'a emporté à chaque position.

Questions fréquentes

Oui. Le décalage logique (`>>>`) remplit toujours les bits de poids fort libérés avec des 0, tandis que le décalage arithmétique (`>>`) y recopie le bit de signe (le bit de poids fort). Comme cet outil traite les valeurs comme des entiers non négatifs dans la largeur de bits choisie, le signe n'est pas vraiment le sujet ici : seul le décalage logique, plus simple à comprendre, est donc proposé.

Les opérateurs binaires de JavaScript effectuent leurs calculs en interne sur des entiers signés de 32 bits. Appliquer NOT à un `00000001` (1) sur 8 bits donne donc normalement `-2`. Cet outil remasque le résultat selon la largeur de bits choisie (8/16/32) ; sur 8 bits, il affiche donc correctement `11111110` (254), la représentation correcte dans cette largeur.

AND ne renvoie 1 que si les deux bits valent 1, ce qui en fait un outil courant pour masquer certains bits. OR renvoie 1 dès que l'un des bits vaut 1, ce qui sert à activer des bits précis. XOR ne renvoie 1 que si les bits diffèrent, ce qui permet d'inverser des bits ou d'échanger deux valeurs.

Le décalage à gauche (`<<`) permet de multiplier rapidement par une puissance de deux (doubler, quadrupler, etc.), tandis que le décalage à droite (logique, comme ici) sert souvent à diviser par deux ou à extraire une plage précise de bits d'une valeur. Les deux reviennent constamment en programmation compétitive et dans les algorithmes fondés sur des masques de bits.

Pas tout à fait : les deux termes sont liés mais distincts. Les opérations binaires désignent les opérations elles-mêmes (AND, OR, XOR, NOT, décalages), tandis qu'un masque de bits est une valeur utilisée avec l'une de ces opérations (généralement AND ou OR) pour lire ou modifier des bits précis. Par exemple, `value & 0b00001111` est un masque de bits classique qui n'extrait que les 4 bits de poids faible.
ツールくん

Anecdote — Les curieuses propriétés du XOR

Les opérations binaires correspondent directement aux circuits logiques d'un ordinateur, ce qui en fait certaines des opérations les plus rapides qu'un processeur puisse exécuter, souvent en un seul cycle d'horloge. Comme elles nécessitent des circuits bien plus simples que des opérations arithmétiques telles que la multiplication ou la division, le code sensible aux performances (traitement d'image, cryptographie, implémentation de protocoles réseau) recourt depuis longtemps à des astuces binaires pour remplacer une arithmétique plus coûteuse.

Le XOR (OU exclusif) possède quelques propriétés amusantes : appliquer XOR à une valeur avec elle-même donne toujours 0 (`a ^ a = 0`), et appliquer XOR avec 0 renvoie la valeur d'origine inchangée (`a ^ 0 = a`). En combinant ces deux faits naît l'astuce classique de « l'échange par XOR », qui permet d'échanger deux variables sans variable temporaire (`a ^= b; b ^= a; a ^= b;`). Elle est aujourd'hui rarement recommandée en production pour des raisons de lisibilité, mais reste un exemple pédagogique apprécié pour comprendre les opérations binaires.

Les masques de bits sont omniprésents dans les systèmes réels. Les permissions de fichiers Unix (lecture=4, écriture=2, exécution=1) relèvent littéralement du OR et du AND binaires en action, et extraire les composantes rouge, verte et bleue d'un code couleur comme `#FF0000` se fait par un décalage à droite combiné à un masque AND. La technique consistant à regrouper de nombreux indicateurs marche/arrêt dans un seul entier, souvent appelée « drapeaux de bits », a été largement utilisée dans d'anciens jeux et systèmes devant suivre de nombreux états avec très peu de mémoire.