Comme la plupart des explications que j'ai vu, ceux ci-dessus sont claires sur la façon de travailler avec complément de 2, mais n'a pas vraiment expliquer ce qu'ils sont mathématiquement. Je vais essayer de faire ça, pour les entiers au moins, et je vais couvrir certains d'arrière-plan qui est probablement familier.
Rappelez-vous comment il fonctionne pour les décimales:
2345
est une façon d'écrire
2 × 103 + 3 × 102 + 4 × 101 + 5 × 100.
De la même manière, le binaire est une manière d'écrire les nombres à l'aide de seulement 0 et 1 suivant la même idée générale, mais le fait de remplacer ces 10s ci-dessus avec 2s. Puis en binaire,
1111
est une façon d'écrire
1 × 23 + 1 × 22 + 1 × 21 + 1 × 20
et si vous en sortir, qui s'avère égal à 15 (base 10). C'est parce que c'est
8+4+2+1 = 15.
C'est bien beau pour les nombres positifs. Il fonctionne même pour les nombres négatifs, si vous êtes prêt à coller un signe moins devant eux, comme le font les humains avec des nombres décimaux. Qui peut même être effectuée dans les ordinateurs, en quelque sorte, mais je n'ai pas vu un tel ordinateur depuis le début des années 1970. Je vais laisser les raisons pour une autre discussion.
Pour les ordinateurs, il s'avère être plus efficace d'utiliser un complément de la représentation des nombres négatifs. Et voici quelque chose qui est souvent négligé. Compléter les notations impliquent une sorte d'inversion des chiffres du nombre, même implicite des zéros qui précèdent une normale nombre positif. C'est maladroit, parce que la question se pose: tous? Qui pourrait être un nombre infini de chiffres pour être considéré.
Heureusement, les ordinateurs ne sont pas infinis. Les nombres sont limités à une longueur (ou largeur, si vous préférez). Donc, revenons-en à l'positifs des nombres binaires, mais avec une taille particulière. Je vais l'utiliser à 8 chiffres ("bits") pour ces exemples. Donc, notre nombre binaire serait vraiment
00001111
ou
0 × 27 + 0 × 26 + 0 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20
Pour former le complément de 2 négatif, nous avons d'abord compléter tous les (binaire) de chiffres pour la forme
11110000
et d'ajouter 1 à la forme
11110001
mais comment devons-nous comprendre que pour signifier -15?
La réponse est que nous avons de changer le sens de la haute-bit afin de. Ce bit sera un 1 pour tous les nombres négatifs. Le changement sera de changer le signe de sa contribution à la valeur du nombre, il apparaît dans. Alors maintenant, notre 11110001 est compris pour représenter
-1 × 27 + 1 × 26 + 1 × 25 + 1 × 24 + 0 × 23 + 0 × 22 + 0 × 21 + 1 × 20
Notez que "-" en face de cette expression? Cela signifie que le bit de signe porte le poids -27, c'est-à -128 (en base 10). Toutes les autres positions de conserver le même poids qu'ils avaient en non signé binaire des nombres.
La préparation de notre -15, il est
-128 + 64 + 32 + 16 + 1
Essayez-la sur votre calculatrice. c'est -15.
De trois façons principales que j'ai vu les nombres négatifs représentés dans les ordinateurs, les 2 en complément à l'emporte, pour plus de commodité dans l'utilisation générale. Il a une curiosité, si. Depuis c'est du binaire, il doit y avoir un même nombre possible de combinaisons binaires. Chaque nombre positif peut être couplé avec son négatif, mais il y a seulement un zéro. En niant un zéro vous obtient zéro. Donc, il y a encore une combinaison, le numéro 1 dans le bit de signe et 0 partout ailleurs. Le correspondant de nombre positif ne rentrait pas dans le nombre de bits utilisés.
Ce qui est encore plus étrange à propos de ce numéro, c'est que si vous essayez de forme positive, en le complétant et en ajoutant un, vous obtenez le même nombre négatif en arrière. Il semble naturel que nul ne cela, mais ce qui est inattendu et pas du tout le comportement que nous sommes habitués à car les ordinateurs de côté, on pense généralement un approvisionnement illimité de chiffres, pas de longueur fixe de l'arithmétique.
C'est comme la pointe d'un iceberg de bizarreries. Il n'y a plus à l'affût au-dessous de la surface, mais c'est assez pour cette discussion. Vous pourriez probablement trouver plus de si vous la recherche de "débordement" pour les points fixes de l'arithmétique. Si vous voulez vraiment obtenir, vous pouvez aussi faire une recherche sur "l'arithmétique modulaire".