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.

Qu'est-ce qu'une opération bit à bit ?

Les opérations bit à bit traitent un nombre comme une suite de chiffres binaires (des 0 et des 1) et appliquent une opération logique chiffre par chiffre, position par position. AND, OR, XOR, NOT et les décalages (à gauche et à droite) en constituent les cinq opérations les plus courantes. Ce sont toutes des instructions de base directement exécutées par le processeur, ce qui les rend nettement plus rapides que les opérations arithmétiques comme la multiplication ou la division. Dans la plupart des langages de programmation, elles s'écrivent `&`, `|`, `^`, `~`, `<<` et `>>`, et servent couramment à la gestion de drapeaux (flags), aux systèmes de permissions, à la cryptographie ou au traitement d'image.

Cet outil permet de saisir une Valeur A, une Valeur B (NOT n'utilise que la Valeur A) ainsi qu'une largeur en bits (8, 16 ou 32 bits), puis affiche le résultat visualisé bit par bit sous forme de grille. Les valeurs peuvent être saisies en décimal, ou avec un préfixe `0x` (hexadécimal) ou `0b` (binaire), exactement comme on les écrirait dans du code. Une valeur qui dépasse la largeur en bits choisie ne peut pas être représentée correctement dans cette largeur : décider de la largeur en bits dès le départ aide donc à interpréter correctement le résultat affiché.

Comment utiliser le simulateur d'opérations bit à bit

  1. Choisissez la largeur en bits Sélectionnez 8, 16 ou 32 bits selon le contexte que vous souhaitez étudier. En cas de doute, commencez par 8 bits : la grille reste petite et les changements de bits sont plus faciles à repérer visuellement.
  2. Choisissez l'opération Sélectionnez AND, OR, XOR, NOT, décalage à gauche ou décalage à droite. Choisir NOT fait automatiquement passer l'interface à un seul champ de saisie, puisque cette opération n'agit que sur une seule valeur.
  3. Saisissez les valeurs Renseignez la Valeur A (et la Valeur B sauf pour NOT) en décimal, en hexadécimal avec le préfixe `0x`, ou en binaire avec le préfixe `0b`. Pour les décalages, indiquez également le nombre de bits à décaler.
  4. Lisez la grille de résultat Le résultat se calcule automatiquement à chaque saisie. Les bits surlignés en jaune indiquent ceux qui ont changé par rapport à la Valeur A à la suite de l'opération.
  5. Comparez les représentations décimale et hexadécimale Sous la ligne de résultat, les valeurs décimale et hexadécimale équivalentes s'affichent : utile pour vérifier qu'un calcul mental ou une conversion de base est correct.

Astuces pour en tirer le meilleur parti

  • 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.

Cas d'usage des opérations bit à bit

Apprentissage de la programmation

Vérifier concrètement le comportement des opérateurs bit à bit rencontrés en C, Java ou Python. NOT et les décalages sont difficiles à calculer de tête : une vérification visuelle immédiate facilite grandement l'apprentissage.

Conception de drapeaux de bits et de systèmes de permissions

Regrouper plusieurs états marche/arrêt dans un seul entier, à la manière des permissions de fichiers Unix. Testez ici le masquage par AND ou l'activation d'un drapeau par OR avant de les implémenter dans votre code.

Programmation compétitive et algorithmes à masque de bits

Vérifier le comportement d'un DP par masque de bits (bitmask DP) ou d'une représentation d'ensemble sous forme d'entier, en testant d'abord avec de petites valeurs faciles à suivre.

Vérification de conversions hexadécimal/binaire

Contrôler qu'une conversion entre hexadécimal, binaire et décimal est correcte en parallèle d'une opération bit à bit. Combinez avec un outil de conversion de base pour un contrôle croisé complet.

Codes couleur et calculs d'adresses réseau

Extraire les composantes rouge, verte et bleue d'un code couleur, ou calculer le AND entre une adresse IP et un masque de sous-réseau pour déterminer une adresse réseau.

Glossaire des opérations bit à bit

AND (ET)
Renvoie 1 uniquement lorsque les deux bits comparés valent 1, et 0 dans tous les autres cas. Très utilisé pour masquer certains bits, c'est-à-dire ne conserver que les positions qui vous intéressent.
OR (OU)
Renvoie 1 dès que l'un des deux bits comparés vaut 1. Sert typiquement à activer (mettre à 1) un ou plusieurs bits précis sans toucher aux autres.
XOR (OU exclusif)
Renvoie 1 uniquement lorsque les deux bits comparés diffèrent. Permet d'inverser des bits, d'échanger deux valeurs sans variable temporaire, ou de détecter des différences entre deux séquences.
NOT (négation)
Inverse tous les bits d'une seule valeur (chaque 0 devient 1 et inversement). Le résultat dépend directement de la largeur en bits choisie, puisque celle-ci détermine combien de bits sont réellement inversés.
Opération de décalage
Déplace l'ensemble des bits d'une valeur vers la gauche ou vers la droite. Un décalage à gauche équivaut à multiplier par une puissance de deux, un décalage à droite à diviser par deux (division entière).
Masque de bits
Valeur combinée à une autre via AND ou OR pour extraire ou modifier des bits précis. Par exemple, `0b00001111` est un masque classique qui n'extrait que les 4 bits de poids faible.
Largeur en bits
Nombre de bits utilisés pour représenter une valeur. Sur 8 bits, la plage représentable va de 0 à 255 ; sur 16 bits, de 0 à 65 535.
Notation binaire / hexadécimale
La notation binaire n'utilise que les chiffres 0 et 1, tandis que la notation hexadécimale utilise les chiffres 0 à 9 ainsi que les lettres A à F. L'hexadécimal sert souvent d'écriture compacte pour regrouper des blocs de bits binaires.

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.
Tool-kun

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.