Convertisseur de base numérique et complément à deux

Vos données

Un 0b, 0o ou 0x en tête est accepté et ignoré, tout comme les espaces et les tirets bas entre les chiffres.

Résultats

Ce que valent ces bits, lus comme vous l'avez choisi

Exactement les mêmes bits, lus dans l'autre sens
En binaire
En hexadécimal
En octal
Tout ce que cette largeur peut contenir

Le nier, étape par étape

Partez des bits
Inversez-les tous
Ajoutez un, et voilà le négatif
Ce qui donne

Inverser les bits et ajouter un revient exactement à soustraire de deux à la puissance de la largeur, et cela a été vérifié sur les deux cent cinquante-six motifs de huit bits. Le faire deux fois redonne toujours le point de départ, et c'est la propriété qui fait tenir tout le procédé.

Cette page compte en nombres entiers de taille quelconque plutôt qu'en virgule flottante habituelle, car à partir de neuf millions de milliards environ le type ordinaire se met à sauter des valeurs : deux puissance cinquante-trois plus un ressort comme deux puissance cinquante-trois. Sur soixante-quatre bits, cela donnerait silencieusement de mauvaises réponses.

Réactions

0

0 commentaires

User profile image

Soyez le premier à commenter

Pourquoi 200 devient-il moins 56 ?

Parce que 200 et moins 56 sont les mêmes huit bits : 11001000. Rien dans ces bits ne dit lequel des deux vous vouliez. La largeur et la lecture se décident ailleurs, par celui qui a écrit le programme, et les bits conviennent aux deux réponses.

Toute la différence tient au bit le plus à gauche. Tant qu'il est à zéro, les deux lectures coïncident exactement, et c'est pourquoi le désaccord reste invisible jusqu'à ce qu'une valeur dépasse la moitié.

Pourquoi la plage va-t-elle de moins 128 à 127 et non de moins 127 à 127 ?

Parce que le zéro doit bien être quelque part, et il est du côté positif. Huit bits donnent 256 motifs différents ; l'un est dépensé pour le zéro, il en reste 255 à partager. Le partage donne 127 positifs et 128 négatifs : le côté négatif en gagne un de plus.

C'est pareil à toutes les largeurs : 16 bits vont de moins 32768 à 32767, et 64 bits de moins 9223372036854775808 à 9223372036854775807.

Existe-t-il un nombre sans opposé ?

Oui, exactement un par largeur : le plus négatif. Moins 128 sur huit bits n'a pas de jumeau positif, car 128 exigerait une place que le côté positif n'a pas.

Inversez les bits de 10000000 et vous obtenez 01111111 ; ajoutez un et vous revenez à 10000000. Le nier rend le même nombre. Cette page le montre au lieu de le cacher, et la propriété a été vérifiée sur 8, 16, 32 et 64 bits.

Que se passe-t-il quand le nombre ne tient pas ?

Il boucle, et cette page montre le bouclage au lieu de refuser. Écrire 300 sur huit bits enregistre 44, et écrire moins 129 enregistre 127.

Ce n'est pas la page qui est laxiste : c'est ce que fait le matériel. Afficher une erreur masquerait précisément le comportement qui cause le bug que vous êtes sans doute venu comprendre.