Calculatrice de programmation et calculatrice bit à bit

Saisissez une seule expression en utilisant les littéraux hexadécimaux 0x, binaires 0b et octaux 0o, les opérateurs bit à bit & | ^ ~, les décalages << >> >>>, les rotations et l’arithmétique ordinaire — le résultat se met à jour en direct en décimal, hexadécimal, octal et binaire, pour une taille de mot de 8, 16, 32 ou 64 bits, signé ou non signé. Plus bas, une grille de bits cliquable, un panneau d’opérations bit à bit à deux opérandes (ET / OU / XOR / NON-ET / NON-OU / NON / décalages / ROL / ROR) et la mise à 1 / effacement / inversion d’un bit isolé. Pour une simple conversion de base sans opérations sur les bits, voir le Convertisseur mathématique ; pour les statistiques, la Calculatrice de statistiques.
Taille du mot   Affichage   Opérateurs : & | ^ ~ << >> >>> + - * / % ( ) — calcul entier uniquement, les résultats sont ramenés à la taille du mot.
DEC
HEX
OCT
BIN
Les bits sont affichés du plus significatif au moins significatif ; les cellules grisées sont en dehors de la taille de mot courante.
index du bit (0 = bit de poids faible)
A =    B =  A et B acceptent des expressions complètes (par ex. 1 << 12).
Le tableau des résultats apparaît dès que A et B sont tous deux analysables. Les décalages et les rotations prennent le nombre de positions dans B.
Essayez un exemple :
Comportement des décalages : << ramène le résultat à la taille du mot (les bits qui sortent par le haut disparaissent). >>> est toujours un décalage logique (non signé). >> suit le sélecteur Affichage : arithmétique en mode signé, logique en mode non signé. Confidentialité : toute la calculatrice fonctionne dans cet onglet — ni serveur, ni stockage.

Qu’est-ce qu’une calculatrice de programmation ?

Une calculatrice de programmation effectue les calculs comme les ordinateurs les stockent : dans des mots de largeur fixe. Au lieu d’une droite numérique infinie, un mot de 8 bits est un cercle de 256 valeurs, un mot de 32 bits un cercle de 4 294 967 296. Chaque résultat est ramené dans ce cercle, et les mêmes bits peuvent être lus comme un compte non signé (0 … 255) ou comme une valeur signée en complément à deux (-128 … 127). Les quatre lignes de bases ci-dessus représentent les mêmes bits de quatre façons — modifiez-en une et les trois autres suivent.

Pourquoi les programmeurs travaillent en hexadécimal

Un chiffre hexadécimal vaut exactement quatre bits ; un octet s’écrit donc toujours avec deux chiffres hexadécimaux, et un mot de 32 bits avec huit. L’hexadécimal est du binaire dont les zéros sont regroupés pour l’œil humain :

BinaireHexadécimalDécimal
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (ou -128 en signé)

Le complément à deux en un paragraphe

Pour lire un mot comme signé, regardez le bit de poids fort. S’il vaut 0, la valeur est simplement le compte non signé. S’il vaut 1, retranchez la taille du cercle : un 0xFF sur 8 bits vaut 255 − 256 = −1. C’est toute l’astuce — -x et 0 - x produisent exactement les mêmes bits, c’est pourquoi le même circuit additionneur sert aux deux. L’inversion de signe se fait par « inverser tous les bits, puis ajouter 1 » : NON(0x01) = 0xFE, +1 = 0xFF = −1.

Les opérateurs de décalage en un coup d’œil

OpérateurNomExemple sur 8 bits (a = 0xF0)
a << 1décalage à gauche0xE0 — le bit de poids fort sort, un zéro entre par le bas
a >> 1 (non signé)décalage logique à droite0x78 — des zéros entrent par le haut
a >> 1 (signé, a = −16)décalage arithmétique à droite0xF8 = −8 — le bit de signe est recopié
a >>> 1toujours logique0x78 quel que soit le sélecteur Affichage
rol(a, 1)rotation à gauche0xE1 — le bit de poids fort sorti rentre par le bas

Les erreurs courantes que cette page vous aide à éviter

Décalage arithmétique ou logique : recopier le bit de signe (arithmétique) et compléter par des zéros (logique) diffèrent dès que le bit de poids fort est à 1 — changez le sélecteur Affichage et regardez 0xF0 >> 1 passer de 0x78 à 0xF8.
La surprise des 53 bits : le type Number ordinaire de JavaScript est un flottant sur 64 bits, avec seulement 53 bits d’entier sûrs — donc 0xFFFFFFFFFFFFFFFF ne peut pas être représenté exactement. Cette page utilise en interne une arithmétique entière exacte sur 64 bits, de sorte que chaque chiffre hexadécimal affiché est fiable.
Pièges des flottants : 0.1 + 0.2 donne notoirement 0.30000000000000004 en virgule flottante ; cette calculatrice ne travaille qu’en entiers par conception — la division tronque vers zéro, exactement comme l’opérateur / du C sur des entiers.
Zéros en tête : en C ancien, un littéral comme 052 désignait l’octal. Ici, le décimal s’écrit avec des chiffres simples et l’octal exige le préfixe 0o, donc rien n’est ambigu.

FAQ

Quel est le plus grand nombre ? — non signé sur 64 bits : 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF) ; signé : ±9 223 372 036 854 775 808.
Pourquoi 1 << 8 donne-t-il 0 ? — la taille du mot est de 8 bits ; le bit 8 n’existe pas et le masque l’élimine. Passez à 16/32/64 bits pour le conserver.
Que fait ~ ? — NON bit à bit : chaque bit s’inverse dans la taille de mot courante, donc ~0 vaut tous à 1 (255 / 65535 / −1 …).
Y a-t-il des flottants ? — non, entiers seulement ; utilisez la Calculatrice scientifique pour les flottants, la trigonométrie et les fonctions.
Quelque chose quitte-t-il mon ordinateur ? — non : ni serveur, ni stockage, ni statistiques ; fermez l’onglet et tout disparaît.