Temps/Nombres

Opérations bit à bit

AND/OR/XOR/NAND/NOR/XNOR/NOT et décalages sur des entiers d'une largeur donnée (8/16/32/64 bits) dans n'importe quel système numérique.

Bitwise operations work directly on a number's individual bits rather than its value as a whole — the basis for permission flags, network protocols, and low-level optimization.

How to use it

Common uses

Things to keep in mind

The result of NOT and shifts depends on the chosen bit width — the same number gives a different result at 8-bit versus 32-bit width because of the different number of bits involved.

XOR is often used to toggle a flag — applying XOR twice with the same value returns the original.

Article sur cet outil: Opérations bit à bit : comment fonctionnent AND, OR et XOR au niveau des bits

Questions fréquentes

Quelle est la différence entre AND, OR, XOR, NAND, NOR, XNOR et NOT ?

AND donne 1 seulement quand les deux bits sont 1, OR donne 1 quand au moins un est 1, et XOR donne 1 quand les bits diffèrent. NAND/NOR/XNOR sont leurs négations, et NOT inverse chaque bit d'un seul opérande.

Comment la largeur de bits et le signe d'un nombre sont-ils gérés ?

Choisissez une largeur de 8/16/32/64 bits — les opérations et décalages se produisent dans cette plage. Les nombres négatifs sont représentés en complément à deux, donc le résultat d'un NOT ou d'un décalage peut sembler inattendu si vous êtes habitué à la notation décimale.

Quelle est la différence entre un décalage à gauche et à droite ?

Un décalage à gauche (<<) ajoute des zéros à droite, multipliant effectivement par 2 élevé à la puissance du décalage. Un décalage à droite peut être logique (ajoute des zéros à gauche) ou arithmétique (préserve le bit de signe) — le type dépend du mode sélectionné.

Pourquoi l'expression « if (a & b == c) » ne fonctionne-t-elle souvent pas comme prévu ?

Dans la plupart des langages, l'opérateur de comparaison == a une priorité plus élevée que l'opérateur bit à bit &, donc l'expression est évaluée comme « a & (b == c) », et non comme l'auteur s'y attend généralement. Pour éviter ce piège, entourez toujours les opérations bit à bit de parenthèses explicites.

Pourquoi utiliser des indicateurs bit à bit plutôt que des variables booléennes séparées ?

Un ensemble d'indicateurs regroupés dans un seul nombre se stocke et se transmet plus compactement (par exemple dans des protocoles réseau ou des formats de fichiers), et vérifier ou modifier un indicateur donné via AND/OR/XOR ne prend qu'une seule opération rapide.

Articles : Temps/Nombres

Temps Unix : pourquoi les ordinateurs comptent le temps depuis 1970

Pourquoi le 1er janvier 1970 est devenu le point de référence du temps pour la plupart des systèmes informatiques.

Expressions cron : comment déchiffrer un horaire de tâches

Comment déchiffrer une expression comme */15 * * * * et savoir exactement quand la tâche s'exécutera.

Systèmes numériques : à quoi servent le binaire, l'octal et l'hexadécimal

Pourquoi la couleur #FF5733 en CSS est écrite avec des chiffres hexadécimaux plutôt que décimaux.

Différence entre dates : pourquoi compter les jours est plus compliqué qu'il n'y paraît

Pourquoi soustraire naïvement deux dates peut donner un résultat incorrect à cause des années bissextiles.

Calcul de l'âge : pourquoi ce n'est pas une simple soustraction d'années

Pourquoi soustraire simplement les années de naissance peut donner un âge supérieur d'un an à l'âge réel.

Fuseaux horaires : pourquoi UTC n'est pas la même chose que GMT

Pourquoi UTC ne change jamais deux fois par an, alors que l'heure de Londres (GMT/BST) change.

Calculatrice de durée : comment additionner correctement heures, minutes et secondes

Pourquoi additionner des minutes et des secondes nécessite de « reporter » le reste sur le rang suivant, comme dans l'addition décimale.

ISO 8601 Duration : comment écrire une durée dans un format standard

Pourquoi PT1H30M signifie « 1 heure 30 minutes », et non « 1 minute 30 heures ».

Numéro de semaine : pourquoi les pays comptent les semaines différemment

Pourquoi le 1er janvier appartient parfois à la semaine 52 ou 53 de l'année précédente selon la norme ISO 8601.

Chiffres romains : comment fonctionne un système sans zéro ni position

Pourquoi IV signifie 4 et non 6, et comment fonctionne la règle de soustraction dans les chiffres romains.

IEEE 754 : pourquoi 0.1 + 0.2 n'est pas égal à 0.3 dans le code

Pourquoi presque tous les langages de programmation affichent 0.30000000000000004 pour 0.1 + 0.2.

Nombre en toutes lettres : pourquoi transformer des chiffres en mots

Pourquoi les documents bancaires écrivent un montant à la fois en chiffres et en toutes lettres.