Calculatrice binaire (opérations bit à bit), gratuite

Effectuez des opérations bit à bit sur des entiers et consultez les résultats en décimal, hexadécimal et binaire.

Saisissez des valeurs et cliquez sur Calculer.

Comment ça marche

  1. Saisissez deux nombres : entrez les valeurs sur lesquelles opérer, en décimal, binaire (préfixe 0b) ou hexadécimal (préfixe 0x).
  2. Choisissez l'opération : sélectionnez AND, OR, XOR, NOT, décalage gauche (<<) ou décalage droit (>>).
  3. Consultez le résultat : la sortie affiche le résultat en décimal, binaire et hexadécimal en même temps, avec une visualisation bit à bit.

Pourquoi utiliser la calculatrice binaire ?

Les opérations bit à bit sont fondamentales en programmation système, cryptographie, développement de jeux, graphismes, réseau et systèmes embarqués. Comprendre comment AND, OR, XOR et les décalages manipulent les bits individuels est crucial pour activer/désactiver des drapeaux, compacter des données et implémenter des algorithmes efficaces. Cette calculatrice montre l'opération au niveau du bit pour voir exactement comment chaque bit est affecté.

Fonctionnalités

Questions fréquentes

À quoi sert XOR en programmation ?

XOR (^) sert à inverser des bits, faire du chiffrement/obfuscation simple, échanger des variables sans variable temporaire, vérifier la parité et mélanger des hachages. Il renvoie 1 quand les bits diffèrent et 0 quand ils sont identiques.

Quelle est la différence entre << et >> ?

Le décalage gauche (<<) déplace tous les bits vers la gauche, équivalent à une multiplication par des puissances de 2. Le décalage droit (>>) déplace les bits vers la droite, équivalent à une division par des puissances de 2. Le décalage droit arithmétique préserve le bit de signe ; le décalage droit logique remplit avec des zéros.

Comment activer ou désactiver un bit précis ?

Pour activer le bit n : value |= (1 << n). Pour désactiver le bit n : value &= ~(1 << n). Pour inverser le bit n : value ^= (1 << n). Pour vérifier si le bit n est activé : (value & (1 << n)) !== 0.

De l'algèbre booléenne au silicium : comment les opérations bit-à-bit sont devenues universelles

Les opérations bit-à-bit que chaque CPU moderne implémente proviennent de deux articles fondateurs publiés à plus de 80 ans d'intervalle. En 1854, George Boole a publié «An Investigation of the Laws of Thought», définissant l'algèbre de la logique à deux valeurs, AND, OR, NOT, et leurs identités. C'était un travail philosophique, pas d'ingénierie. Puis en 1937, un étudiant de master du MIT âgé de 21 ans nommé Claude Shannon a écrit sa thèse de master «A Symbolic Analysis of Relay and Switching Circuits», prouvant que l'algèbre booléenne pouvait décrire les circuits à relais électriques et donc que tout calcul logique pouvait être physiquement implémenté. Cette thèse est largement citée comme la thèse de master la plus importante du 20e siècle et est le fondement de toute l'électronique numérique. Le complément à deux, la représentation binaire pour les nombres négatifs que chaque CPU utilise, a été breveté en 1962 par Burroughs Corporation mais avait été utilisé dans l'IBM 704 (1954) et d'autres premières machines. IEEE 754 a standardisé la représentation à virgule flottante en 1985, fixant la disposition des bits que chaque Number JavaScript utilise encore, 1 bit de signe, 11 exposant, 52 mantisse pour binary64. Aujourd'hui, les opérateurs du langage C & | ^ ~ << >> se mappent presque directement à des instructions CPU uniques, ce qui explique pourquoi le code bit-à-bit peut être dramatiquement plus rapide que l'équivalent arithmétique.

Les six opérateurs, ce qu'ils font au niveau du bit

Où le bit-à-bit gagne réellement sa place

Erreurs qui mordent

Pourquoi le complément à deux, et ce qu'il signifie au niveau du bit

Chaque CPU moderne représente les entiers négatifs en utilisant le complément à deux. Dans un octet signé 8 bits, les valeurs 0 à 127 sont encodées comme binaire 0000_0000 à 0111_1111. Puis −1 est encodé comme 1111_1111, −2 comme 1111_1110, jusqu'à −128 comme 1000_0000. La raison : avec cet encodage, l'addition fonctionne de la même façon que les entrées soient signées ou non signées, le CPU n'a pas besoin d'instructions add-signé et add-non-signé séparées. L'asymétrie est que la plage négative est plus grande que la positive (en 8 bits, −128 à +127), c'est pourquoi Math.abs(INT_MIN) déborde dans chaque langage avec des entiers à largeur fixe. Les encodages plus anciens signe-magnitude (un bit pour le signe, le reste pour la magnitude) et complément à un existaient dans les années 1950-60 mais ont perdu face au complément à deux parce qu'ils avaient deux représentations de zéro et nécessitaient du matériel cas-spécial pour la négation.

Plus de questions fréquentes

Pourquoi ~5 est-il égal à -6 au lieu de 250 ?

Parce qu'en complément à deux (l'encodage que chaque CPU moderne utilise), inverser chaque bit d'un nombre positif donne -n - 1. Donc ~5 === -6 et ~0 === -1. Dans un contexte non signé 8 bits, le même motif de bits que ~5 (binaire 1111_1010) représenterait 250. JavaScript traite le résultat comme signé 32 bits, donc vous voyez -6. Pour obtenir l'interprétation non signée : (~5) >>> 0 en 32 bits, ce qui donne 4294967290, ou masquer à 8 bits avec ~5 & 0xFF qui donne 250.

Est-ce que XOR est vraiment un chiffrement ?

XOR est le bloc de construction de chaque chiffrement symétrique moderne, mais XOR seul n'est pas un chiffrement sécurisé. Un masque à usage unique, XOR avec une clé vraiment aléatoire aussi longue que le message, utilisée exactement une fois, est théoriquement de l'information inviolable (Shannon, 1949). Réutiliser la clé, ou utiliser une clé plus courte que le message, et l'analyse de fréquence le casse trivialement. Les vrais chiffrements comme AES utilisent XOR plus diffusion et substitution pour amplifier une courte clé en un flux d'octets pseudo-aléatoires qui ressemblent à un masque à usage unique pour quiconque sans la clé. Donc «chiffrer avec XOR» est bien seulement pour l'obfuscation triviale, jamais pour de vrais secrets.

Quand devrais-je utiliser BigInt au lieu de Number pour la manipulation de bits ?

Chaque fois que vous avez besoin de plus de 32 bits de précision bit-à-bit. Les opérateurs bit-à-bit JavaScript tronquent les opérandes Number à des entiers signés 32 bits avant le calcul. Si vous avez besoin de masques 64 bits (par ex. manipulation d'un ensemble de drapeaux de fonctionnalités 64 bits, travail avec les offsets mmap Linux, ou implémentation de SHA-512), utilisez BigInt : 0xFFFFFFFFFFFFFFFFn & 0xFFn === 255n. BigInt est plus lent que Number, ~3-10× selon l'opération, donc réservez-le pour les cas où 32 bits sont véritablement insuffisants.

Comment puis-je compter le nombre de bits 1 dans un nombre ?

C'est le compte de population ou poids de Hamming. La plupart des CPU modernes ont une seule instruction pour cela (POPCNT sur x86, VCNT sur ARM). En JavaScript, pas de natif, alors utilisez le classique de manipulation de bits : let c = 0; while (x) { c += x & 1; x >>>= 1; }. Ou l'astuce SWAR parallèle de Hacker's Delight : x = x - ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x + (x >> 4)) & 0x0F0F0F0F; return (x * 0x01010101) >>> 24;, qui compte les bits dans un entier 32 bits en environ une douzaine de cycles.

Mes données sont-elles envoyées quelque part quand j'utilise cette calculatrice ?

Non. Chaque opération s'exécute dans le moteur JavaScript de votre navigateur, aucun appel réseau ne se produit pendant un calcul. Ouvrez l'onglet Réseau dans DevTools et cliquez Calculer, vous verrez zéro requête sortante. Sûr pour les masques sensibles, les clés ou le travail de mise en page de bits propriétaire.

Outils associés

Convertisseur binaire vers texte, gratuit Convertisseur de bases numériques, gratuit Calculateur chmod, gratuit Génération de hachages en ligne, gratuite