Comment 0 a-t-il deux valeurs dans son complément?

12

On dit que dans le complément à 2, 0 n'a qu'une seule valeur, tandis que dans le complément à 1, +0 et -0 ont des valeurs distinctes. Que sont-ils?

user136782
la source
8
0 n'a pas deux valeurs. Il a la valeur 0. Période. Ce qu'il ne dispose en complément de 1 est deux représentations . Mais ce n'est pas vraiment quelque chose d'unique. Par exemple, le nombre 10 a une infinité de représentations en décimal: 10, +10, 010, +010, 0010, +0010,… et ainsi de suite.
Jörg W Mittag
Exactement. Les valeurs ne sont que des classes d'équivalence des représentations, et ce qu'on appelle «la valeur 0» se trouve être une classe d'équivalence contenant à la fois 000...0et 111...1. Mais ces deux représentations ne constituent encore qu'une seule valeur.
leftaroundabout

Réponses:

19

Dans le complément 1, vous inversez simplement tous les bits.

Considérez ces 2 exemples (en supposant 8 bits):

  • , donc - 4 = 111110114=00000100-4=11111011

  • , donc - 0 = 11111111 .0=00000000-0=11111111

Vous avez donc 2 façons de représenter le nombre 0

Dans le complément à 2, vous ajoutez 1 à la représentation du complément à 1 du nombre négatif

  • qui dans le complément de 1 était 11111011 devient 11111100-41111101111111100
  • qui dans le complément de 1 était 11111111 devient 00000000 identique à 0-01111111100000000

Vous n'avez donc qu'une seule façon de représenter le 0 dans ce cas

Comme vous pouvez le voir dans les exemples, la différence est que:

  • en complément de 1, avec 8 bits, vous pouvez simplement exprimer des nombres de à 2 7 - 1 (de -127 à 127)-2sept+12sept-1
  • en complément de 2 avec 8 bits, vous pouvez exprimer des nombres de à 2 7 - 1 (de -128 à 127), donc un nombre de plus-2sept2sept-1
abc
la source
7
Il peut être utile de mentionner que le complément à 2 a plus d'avantages à côté d'un seul numéro de plus dans la plage, même si vous n'entrez pas dans les détails de ce qu'ils sont.
KRyan
7
Pourrait aussi bien mentionner l'un desdits avantages dans cette section de commentaires ici: L'un des principaux avantages est que la soustraction (/ l'addition de nombres négatifs) peut être mise en œuvre simplement en faisant semblant que les nombres ne sont pas signés et en les ajoutant. Aucun cas particulier n'est nécessaire pour la soustraction = circuits et logique beaucoup plus simples. Cette page a une belle rédaction sur ce sujet.
Jason C
3

Dans le complément de l'un, vous annulez un nombre en retournant tous les bits. Par conséquent, la négation de zéro, donne 1 1 , ce qui représente - 0 , ce qui revient au même que zéro.0011-0

David Richerby
la source
Ceux-ci complètent les travaux d'addition ou de soustraction avec le transport de fin. Bien sûr, ce qui est affiché au programmeur n'a pas besoin d'être la représentation sous-jacente.
2017
1
@ttw La question demande quelles sont les deux représentations de zéro, donc je ne sais pas où l'addition, la soustraction et les programmeurs entrent en jeu.
David Richerby
3

Parler de deux valeurs différentes de 0 dans son complément est trompeur. Le complément à un (et le complément à deux) sont des représentations binaires de nombres. Ils décrivent un moyen de représenter des nombres en binaire et comment effectuer des opérations arithmétiques sur eux. Le nombre qui est représenté par la séquence de bits est la valeur.

0-00=-00

00011

Martijn
la source