Le premier bug qui m'a appris à respecter les largeurs de bits était un drapeau de permission qui ne cessait de se nettoyer J'étais ORing un masque de bits dans une colonne entière, et de temps en temps tout le champ se réinitialisait La cause était embarrassante une fois que je l'ai vu : je raisonnais sur les bits comme s'ils vivaient dans 32 emplacements, mais la valeur avait déjà été élargie et un errant PAS quelque part en amont n'avait retourné des bits je n'ai jamais pris en compte Je l'ai fixé en m'asseyant avec une calculatrice qui m'a montré les bits réels à la largeur réelle, pas la décimale ordonnée ma langue imprimée Ce guide parle de cette habitude, en utilisant le Calculatrice Binaire sur Toolz.dev, et pourquoi faire des mathématiques au niveau des bits où vous pouvez voir chaque base à la fois permet d'économiser des heures de devinettes.
tl;dr : Une calculatrice binaire effectue des opérations arithmétiques (ajouter, soustraire, multiplier, diviser) et au niveau du bit (ET, OR, XOR, NOT, décalages) sur des entiers écrits en binaire, octal, décimal ou hexadécimal, et montre le résultat dans les quatre bases à la fois. L'arithmétique est exacte à n'importe quelle taille ; les opérations au niveau du bit dépendent d'une largeur de bit choisie. Le Calculatrice Binaire fait les deux, entièrement dans votre navigateur, et rapporte les lectures signées et non signées pour des résultats au niveau du bit.
Qu'est-ce qu'une calculatrice binaire ?
Une calculatrice binaire est un outil qui fonctionne sur des entiers en base deux, mais les utiles ne se limitent pas du tout à la base deux. Vous choisissez la base dans laquelle vous pensez, binaire, octale, décimale ou hexadécimale, tapez vos nombres, choisissez une opération et lisez la réponse. Les bons montrent cette réponse dans chaque base simultanément, vous n'exécutez donc jamais de conversion distincte en vérification de santé mentale de ce que vous avez obtenu.
La raison pour laquelle cela compte est que le travail de bas niveau croise constamment entre les bases Une couleur est hexagonale, un masque d'autorisation est binaire dans votre tête mais décimal dans la base de données, une valeur réseau est octale dans une configuration et décimale dans une autre Faire le calcul à un endroit, avec toutes les représentations visibles, supprime toute une classe d'erreurs de transcription Vous ne copiez pas une valeur hexadécimale dans une calculatrice décimale et espérez que vous l'avez convertie correctement en premier.
Sur Toolz.dev le flux est court Choisissez la base d'entrée Tapez la première valeur Choisissez une opération Tapez la deuxième valeur Le résultat apparaît en binaire, octal, décimal, et hex ensemble, et pour les opérations au niveau du bit il montre également la lecture signée et la disposition du bit à la largeur que vous avez choisie.
Quelles opérations supporte-t-il ?
Deux familles, et les garder droits est tout le jeu Les opérations arithmétiques sont additionner, soustraire, multiplier, diviser, et modulo Ceux-ci agissent sur la vraie valeur numérique, donc ils se comportent comme des maths ordinaires et ne se soucient pas de la largeur de bit La division renvoie le quotient entier et rapporte tout reste, et modulo renvoie juste le reste, qui est la distinction que les gens obtiennent le plus souvent en arrière.
Les opérations au niveau du bit sont ET, OR, XOR, NAND, NOR, XNOR, NOT, et les décalages gauche et droit Ceux-ci agissent sur les bits bruts à l'intérieur d'un registre fixe, donc leur réponse dépend entièrement de la largeur de ce registre. ET, OR, et XOR sont les trois quotidiens : ET masque les bits désactivés, OU définit les bits activés, XOR les active. Les formes annulées, NAND, NOR et XNOR, sont leurs compléments dans la largeur. PAS retourne chaque bit. Les décalages déplacent l'ensemble du motif à gauche ou à droite d'un certain nombre de positions, laissant tomber les bits qui tombent de la fin.
Voici le modèle mental rapide que j'utilise pour décider lequel je veux :
| Opération | Symbole | Famille | Usage typique |
|---|---|---|---|
| Ajouter/Soustraire | + / − | Arithmétique | Mathématiques entières ordinaires, n'importe quelle taille |
| Multiplier /Diver | × / ÷ | Arithmétique | La division rend compte du quotient et du reste |
| Modulo | mod | Arithmétique | Reste seulement, par exemple indexation enveloppante |
| ET | & ; | Par bits | Masquer les bits, tester un drapeau |
| OU | | | Par bits | Définissez des drapeaux, combinez des masques |
| XOR | ^ | Par bits | Basculer les bits, la parité bon marché et les swaps |
| PAS | ~ | Par bits | Inversez chaque bit dans la largeur |
| Décalage à gauche/à droite | << />> | Par bits | Multipliez ou divisez par puissances de deux, pack champs |
Pourquoi dois-je choisir une largeur de bit ?
C'est la question qui fait trébucher tout le monde nouveau vers les mathématiques au niveau du bit, et c'est celle sur laquelle la calculatrice est la plus opiniâtre L'arithmétique a une réponse évidente peu importe la taille : cinq plus trois font huit que vous l'imaginiez dans un octet ou un mot de 64 bits Mais au niveau du bit, PAS de réponse du tout jusqu'à ce que vous sachiez combien de bits existent PAS de cinq est " ; basculer chaque bit," ; et le résultat dépend s'il y a huit bits ou soixante-quatre à retourner.
Les décalages ont la même dépendance par rapport à l'autre direction Décaler une valeur laissée suffisamment loin et les bits défilent sur le bord supérieur Le fait qu'ils disparaissent ou s'enroulent dépend de la taille du registre Un type entier de largeur fixe en C, Java, Go ou Rust répond à cela en définissant la largeur à l'avant : a uint8 est huit bits, a uint32 est de trente-deux, et chaque opération au niveau du bit se produit à l'intérieur de cette boîte. La calculatrice reflète cela exactement en vous permettant de choisir 8, 16, 32 ou 64 bits, de sorte que le résultat correspond à ce que votre code réel produira plutôt qu'à une abstraction idéalisée de largeur infinie.
Choisir la mauvaise largeur n'est pas une erreur d'arrondi, c'est une réponse différente NOT of five est 250 en huit bits et 4294967290 en trente-deux Les deux sont corrects pour leur largeur, et aucun des deux n'est correct pour l'autre Prendre l'habitude de définir la largeur pour correspondre à votre type de données est la discipline la plus utile que cet outil encourage.
Comment le complément deux' ; s apparaît-il dans les résultats ?
Presque tous les processeurs représentent des entiers signés en utilisant complément deux's&, et la calculatrice suit la même convention donc sa sortie correspond à votre matériel En complément à deux & #39 ; s, le bit du haut du registre porte un poids négatif, donc un motif de huit bits de 11111010 se lit comme 250 si vous le traitez comme non signé, ou comme -6 si vous lisez le bit du haut comme un signe.
C'est pourquoi l'outil rapporte les deux lectures pour un résultat au niveau du bit Lorsque vous exécutez NOT sur cinq bits sur huit, vous obtenez le modèle de bits 11111010 Le calculateur affiche la valeur non signée 250, la valeur signée -6, et la disposition binaire, de sorte que vous pouvez voir qu'il s'agit des mêmes bits interprétés de deux façons Cette double lecture est exactement ce dont vous avez besoin lorsqu'une valeur croise un type signé et un type non signé dans votre code, qui est une source classique de " ; impossible" ; numéros apparaissant dans les journaux.
Les résultats arithmétiques suivent la même règle lorsqu'ils deviennent négatifs Soustrayez douze de cinq et la vraie réponse est -7, que la calculatrice affiche en décimal avec un signe moins, tandis que ses formes binaires, octaux et hexadécimales utilisent le motif deux' ; s-complément dans la largeur que vous avez choisie, 11111001 en huit bits. Voir la valeur négative et son motif de bits côte à côte est la façon dont l'idée abstraite de " ; le signe est juste le bit" supérieur ; enfin les clics.
Comment puis-je ajouter ou soustraire des nombres binaires à la main et les vérifier ici ?
L'addition binaire suit les mêmes règles de retenue que décimale, avec un alphabet plus petit Zéro plus zéro est zéro, zéro plus un est un, un plus un est zéro retenue un, et un plus un plus une retenue est une retenue un Donc 1010 plus 1100 fonctionne colonne par colonne à partir de la droite : 0+0 est 0, 1+0 est 1, 0+1 est 1, 1+1 est 0 retenue 1, et la retenue devient le bit principal, donnant 10110, qui est 22 en décimal Frapper ça dans la calculatrice le confirme dans chaque base à la fois, c'est ainsi que je vérifie ma main pour enseigner l'arithmétique ou je.
La soustraction est l'endroit où le complément à deux & #39 ; gagne sa garde Plutôt que d'emprunter à travers les colonnes, les ordinateurs soustraient en ajoutant le négatif, et le négatif est formé en inversant les bits et en ajoutant un Vous avez rarement besoin de faire cela à la main, mais cela explique pourquoi la calculatrice peut soustraire en territoire négatif proprement : 5 moins 12 devient 5 plus le complément à deux & #39 ; s de 12, et le résultat est le modèle à -7 décrit ci-dessus Si vous voulez déplacer une seule valeur entre les bases sans faire aucun calcul dessus, le Convertisseur de base de nombres est l'outil compagnon, et le traducteur binaire gère le cas où vous transformez du texte en bits plutôt que de faire de l'arithmétique.
Quand les opérations au niveau du bit comptent-elles réellement ?
Plus souvent que ce à quoi les débutants s'attendent, et dans des endroits qui ne sont pas évidemment " ; bas niveau." ; Les systèmes d'autorisation sont le cas classique : un ensemble de drapeaux regroupés en un entier, où vous OU pour accorder une autorisation, ET avec un complément pour le révoquer, et ET pour en tester un Les basculements de fonctionnalités, les modes de fichiers Unix et les cartes de registres matériels utilisent tous le même motif Si vous avez déjà vu une valeur comme 0o755 ou une constante définie comme 1 << 3: vous avez rencontré des petits packing.
XOR apparaît aussi bien dans des astuces bon marché que dans de vrais algorithmes : basculer un peu, calculer la parité et le swap classique sans temp. Les changements se multiplient et se divisent par des puissances de deux bien plus rapides que la multiplication générale, et ils regroupent plusieurs petits champs en un seul mot, c'est ainsi que les valeurs de couleur, les en-têtes réseau et les formats de sérialisation compacts restent petits. Je les ai constamment utilisés sur la pile, depuis une API Laravel qui stocke les drapeaux de rôle comme masque binaire jusqu'à une toile React qui lit RGBA à partir d'un entier compacté. Comprendre les opérations est un petit investissement qui rapporte partout, et j'ai écrit sur la façon dont celles-ci s'adaptent à un kit plus large dans le Outils de productivité des développeurs pièce.
Les échecs subtils sont ce qui fait qu'une calculatrice visible vaut la peine d'être utilisée Un masque appliqué à la mauvaise largeur garde ou dépose silencieusement des bits que vous n'aviez pas l'intention Un décalage qui supposait que 32 bits se comporte différemment à 64 Une valeur signée ETed contre un masque non signé produit un nombre qui semble impossible jusqu'à ce que vous voyiez les bits de complément à deux & #39 ; s. En regardant la disposition des bits changer pendant que vous ajustez la largeur, ces bugs des mystères se transforment en erreurs évidentes.
Il y a un angle d'enseignement ici aussi Quand j'explique les bitmasks à quelqu'un de nouveau, les nombres décimaux sont inutiles : 12 ET 10 étant 8 ne signifie rien jusqu'à ce que vous aligniez 1100 et 1010 et regardez le ET ne gardez que la colonne où les deux sont 1. Parce que la calculatrice montre la disposition binaire à côté de la décimale, de l'octal et de l'hexagone, elle fait cet alignement pour vous, et l'opération cesse d'être une règle à mémoriser et devient quelque chose que vous pouvez voir Il en va de même pour les décalages, où montrer qu'un décalage à gauche par un double la valeur tout en glissant chaque bit à gauche connecte la signification arithmétique à la mécanique au niveau binaire d'un nombre ne peut jamais.
Quelles sont les limites, et mes données sont-elles privées ?
Le côté arithmétique n'a effectivement aucune limite de taille La calculatrice utilise JavaScript' ; s BigInt[TRADUCTION], un type entier de précision arbitraire normalisé en ECMAScript« Donc, ajouter ou multiplier des nombres avec des dizaines de chiffres reste exact sans débordement silencieux. Il s’agit d’un réel avantage par rapport aux calculatrices construites sur des nombres ordinaires à virgule flottante, qui perdent en précision au-delà d’une quinzaine de chiffres et ne peuvent pas représenter exactement de grands entiers. ».
Le côté bit à bit est délibérément borné par la largeur que vous choisissez, car c'est le point : une opération à largeur fixe n'a de sens qu'à l'intérieur d'un registre fixe Si vous entrez une valeur plus grande que la largeur ne peut contenir, la calculatrice la réduit à cette largeur et vous avertit, donc une troncature ne se produit jamais silencieusement Les décalages sont plafonnés à un maximum sain donc un montant de décalage incontrôlable ne peut pas accrocher la page.
Sur la confidentialité, tout s'exécute dans votre navigateur Rien de ce que vous tapez n'est téléchargé, enregistré ou stocké, et l'outil continue de fonctionner si vous vous déconnectez d'internet après le chargement de la page Cela compte plus que ce qu'il semble : les valeurs que les gens exécutent à travers une calculatrice au niveau du bit sont souvent des masques d'autorisation, des jetons ou des adresses matérielles de systèmes qu'ils préfèrent ne pas coller dans un serveur qu'ils ne contrôlent Si vous souciez des outils qui conservent vos données sur votre machine, le Confidentialité des données dans les outils en ligne le guide explique comment distinguer les outils côté client de ceux qui téléphonent à la maison. Pour le travail de bas niveau voisin, le Convertisseur IEEE 754 et le Tableau ASCII complétez l'ensemble.
Questions fréquentes
Comment ajouter deux nombres binaires ?
Définissez la base d'entrée sur binaire, tapez le premier nombre, choisissez Ajouter, tapez le deuxième nombre et lisez le résultat Par exemple, 1010 plus 1100 est 10110, que l'outil affiche également comme 22 en décimal, 26 en octal et 16 en hex. L'arithmétique est exacte à n'importe quelle longueur.
Quelle est la différence entre les opérations arithmétiques et au niveau du bit ?
Les opérations arithmétiques (ajouter, soustraire, multiplier, diviser, modulo) agissent sur la vraie valeur numérique et sont indépendantes de la largeur des bits Les opérations bit à bit (AND, OR, XOR, NOT et décalages) agissent sur les bits bruts à l'intérieur d'un registre à largeur fixe, leur résultat dépend donc du choix de 8, 16, 32 ou 64 bits.
Pourquoi dois-je choisir une largeur de bit ?
les opérations NOT et shift n'ont de réponse définie qu'une fois la taille du registre connue, car elles dépendent des bits existants et de ceux qui tombent de la fin La sélection de 8, 16, 32 ou 64 bits fait correspondre la calculatrice à la façon dont un type entier spécifique se comporte dans un langage de programmation réel.
Comment la calculatrice gère-t-elle les résultats négatifs ?
Les résultats arithmétiques négatifs sont affichés avec un signe moins en décimal, et leurs formes binaires, octaux et hexadécimales utilisent deux & #39 ; s-complément dans la largeur sélectionnée Pour les résultats au niveau du bit, l'outil rapporte à la fois la valeur non signée et la valeur signée two & #39 ; s-complément.
Puis-je mélanger des bases, comme ajouter un nombre hexadécimal à un nombre décimal ?
Les deux opérandes sont lus dans la base unique que vous sélectionnez, vous ne pouvez donc pas mélanger les bases dans un calcul Pour combiner un hex et une valeur décimale, convertissez d'abord l'un d'eux, puis saisissez les deux dans la même base Le résultat est toujours affiché dans les quatre bases.
Que fait la calculatrice quand je divise ?
Division renvoie le quotient entier, et si la division n'est pas exacte l'outil rapporte le reste sous forme de note Pour obtenir le reste par lui-même, utilisez plutôt l'opération Modulo, qui ne renvoie que le reste.
Quelle peut être la taille des chiffres ?
L'arithmétique utilise JavaScript BigInt, de sorte que les nombres comportant plusieurs dizaines de chiffres sont traités exactement sans débordement. Les opérations bit à bit sont limitées par la largeur choisie ; les valeurs qui le dépassent sont réduites à cette largeur et l'outil vous avertit lorsque cela se produit.
Mes données sont-elles envoyées n'importe où ?
Non. Chaque calcul s'exécute sous forme de JavaScript dans votre navigateur. Rien de ce que vous tapez n'est transmis, enregistré ou stocké, et l'outil continue de fonctionner si vous vous déconnectez d'Internet après le chargement de la page.
Essayez le calcul vous-même gratuitement Calculatrice Binaire. Il gère les opérations arithmétiques et au niveau du bit sur les zones binaire, octal, décimal et hexadécimal, entièrement dans votre navigateur, sans rien télécharger.



