Maison >Problème commun >Pourquoi les nombres négatifs dans les ordinateurs sont-ils stockés en complément à deux ?
L'utilisation du stockage du complément à deux pour les nombres négatifs dans les ordinateurs peut simplifier les circuits arithmétiques informatiques de base, de sorte que l'addition et la soustraction ne doivent être mises en œuvre qu'avec des circuits d'addition, et l'addition est utilisée à la place de la soustraction. Le complément est le plus petit reste congru positif d'un nombre négatif, donc l'ajout d'un nombre négatif et la soustraction d'un nombre positif peuvent tous deux être représentés par l'ajout d'un complément.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
Savez-vous comment les entiers sont stockés dans les ordinateurs ? Est-ce le bit de signe plus le bit de valeur ? Les bits de valeur sont-ils stockés au format binaire normal ?
Si vous répondez oui aux deux dernières questions, cela signifie que lorsqu'il est stocké en binaire 3 bits et que le bit de signe 0 représente positif et 1 représente négatif, 1 sera stocké comme 001
et -1 le sera Enregistrez sous 101
. Malheureusement, ce n'est pas le cas. Les ordinateurs stockent actuellement les entiers sous la forme d'un complément à deux au lieu de la forme naturelle. Bien que le complément à deux soit également représenté par le bit de signe plus le bit de valeur, les règles d'expression sont différentes : 1 sera enregistré sous 001
, -1 sera enregistré sous 111
.
Si vous avez répondu correctement aux trois questions, vous savez que les entiers sont stockés au format complément à deux dans les ordinateurs, mais savez-vous pourquoi ce format est utilisé ? Et "Le complément d'un nombre positif est égal au code d'origine ; le complément d'un nombre négatif est égal au complément plus 1, et le complément est égal au bit de signe du code d'origine inchangé, et le reste les bits sont inversés." Que signifie un tel complément ? Quoi ? (En supposant que vous ne le sachiez pas, veuillez lire sur XD)
Regardons d'abord le but de l'utilisation des codes complément, puis oublions la définition des codes complément ci-dessus. Suivez-moi à partir de cet objectif et explorons le. essence des codes complémentaires étape par étape.
Objectif : Afin de simplifier le circuit de fonctionnement de base de l'ordinateur, l'addition et la soustraction doivent uniquement être mises en œuvre via le circuit d'addition, c'est-à-dire laisser soustraire un nombre positif ou ajouter un nombre négatif De telles opérations. peut être fait avec Ajouter un nombre positif à la place. Ainsi, la forme de stockage des nombres négatifs est modifiée et stockée sous une forme qui peut être directement ajoutée sous forme de nombres positifs. Cette forme est le code complémentaire. (Les nombres positifs n'ont pas besoin d'être modifiés, donc les nombres positifs sont généralement omis dans la discussion suivante)
2.1. Utiliser l'horloge pour comprendre la soustraction et l'addition Vous constatez que l'horloge est à 6 heures, mais il n'est en réalité que 2 heures maintenant, c'est-à-dire , il est en avance de 4 heures. Vous pouvez le corriger de deux manières, l'une consiste à le reculer de 4 heures dans le sens inverse des aiguilles d'une montre jusqu'à 2 heures, et l'autre consiste à composer 6 heures dans le sens des aiguilles d'une montre jusqu'à 12 heures, puis à composer. 2 heures, c'est-à-dire composer 8 heures dans le sens des aiguilles d'une montre jusqu'à 2 heures. Donc pour le cadran de l'horloge, si signifie tourner N heures dans le sens inverse des aiguilles d'une montre, et signifie tourner N heures dans le sens des aiguilles d'une montre, alors
aura aussi, -N
, et même Vous pouvez aussi N
. ..-4 = +8
-1 = +11
Quelles règles sont cachées ici ? En fait, en mathématiques, -5 = +7
peut être classé comme le même type de nombres qui remplissent certaines conditions - -4 = +8 = +20 = +32 = -16
est congru
-4、+8、+20、+32、-16
La définition du module et de la congruence sur le wiki chinois est : deux entiers a et b, si les restes obtenus en les divisant par un entier positif m sont égaux, alors a et b sont dits congruent modulo m.
Dans un système de comptage débordable, si la capacité du système de comptage est prise comme modulo, alors tous les nombres congrus à ce module auront la même représentation dans ce système de comptage, et les opérations sera équivalent.Par exemple, le cadran de l'horloge dans l'exemple ci-dessus est un système de comptage à débordement, modulo 12, donc
ces nombres qui sont congrus au modulo 12 sont exprimés de la même manière sur le cadran de l'horloge, et ces opérations sont effectuées sur le aiguille des heures Le résultat est le même, ils seront tous composés à la même position.
Un système de comptage composé de binaires à n bits éliminera les bits hauts débordants, c'est donc également un système de comptage débordant, et son module est (2 ^ n). (En comptant de 0 à (2^n -1), tout débordera)
On peut en déduire que dans un système de comptage composé de binaires à 3 chiffres modulo 8, -4、+8、+20、+32、-16
peut utiliser le même nombre binaire Pour exprimer , soustraire 10 et ajouter 14 en même temps obtiendra le même résultat.
-2,-10,6,14
2.2. Dériver le complément
Donc, tant que le complément est le reste congru positif d'un nombre négatif, alors l'addition peut être réalisée. Ce complément de congruence positif a le même résultat que l'ajout d'un autre nombre négatif. Pour un nombre négatif, il existe d’innombrables congruences positives qui remplissent les conditions. Afin de réduire les opérations inutiles, on peut préciser que le complément est le plus petit nombre positif parmi eux.
Peut-être parce que trouver le code complément à travers le code original est une opération complément modulo, on l'appelle le code complément.
Notez que les codes de complément ici sont tous spécialement marqués par moi, car ce n'est pas le véritable formulaire de complément stocké dans l'ordinateur. Il devrait s'appeler numéro de complément, mais croyez-moi, il est très proche. .3.1 Il y a encore quelques problèmes avec cette expression de code complémentaire
En convertissant en complément à deux, soustraire un nombre devient effectivement ajouter un nombre. Cela semble très bien, mais il y a un problème évident, c'est-à-dire que le signe du nombre lui-même est perdu. Par exemple, un binaire à 3 chiffres peut normalement représenter
En utilisant la méthode du complément, il peut remplacer l'opération de 0~7
, mais il ne peut pas vraiment représenter -8~-1
car vous ne savez pas s'il s'agit d'un. nombre positif ou négatif. -8~-1
Nous avons converti les nombres négatifs en une forme plus acceptable pour les ordinateurs dans les calculs, mais ils ont perdu les informations le concernant en tant que nombre.
3.2.Comment améliorer le code complémentaire
Je ne sais pas comment Daniel a eu l'idée, le problème a été parfaitement résolu :-8~-1
Ajoutez un chiffre pour indiquer positif ou négatif .
La méthode spécifique est : ajoutez un bit de signe au bit haut à gauche. Ce bit de signe, avec le code pseudo-complémentaire que nous avons déduit plus tôt, forme un code complémentaire vraiment parfait. .
Effet obtenu : En lisant le bit de signe, vous pouvez connaître le signe du nombre. En même temps, le bit de signe participe à l'opération, au report et à l'exécution comme le bit de valeur. dans l’opération d’addition.
Site Web PHP chinois ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!