¿Cómo 0 tiene dos valores en el complemento de uno?

12

Se dice que en el complemento de 2 0 tiene solo un valor, mientras que en el complemento de 1 ambos +0 y -0 tienen valores separados. ¿Qué son?

usuario136782
fuente
8
0 no tiene dos valores. Tiene el valor 0. Período. Lo que tiene en el complemento de 1 son dos representaciones . Pero eso no es realmente algo único. Por ejemplo, el número 10 tiene infinitas representaciones en decimal: 10, +10, 010, +010, 0010, +0010, ... y así sucesivamente.
Jörg W Mittag
Exactamente. Los valores son solo clases de equivalencia de las representaciones, y lo que se llama "el valor 0" es una clase de equivalencia que contiene ambos 000...0y 111...1. Pero estas dos representaciones aún constituyen un solo valor.
Leftaroundabout

Respuestas:

19

En el complemento de 1 simplemente invierte todos los bits.

Considere estos 2 ejemplos (suponiendo 8 bits):

  • 4=000001004=11111011

  • 0=000000000=11111111

Entonces tienes 2 formas de representar el número 0

En el complemento de 2, agrega 1 a la representación del complemento de 1 del número negativo

  • 41111101111111100
  • 01111111100000000

Entonces, solo tiene una forma de representar el 0 en este caso

Como puede ver en los ejemplos, la diferencia es que:

  • 27+1271
  • 27271
a B C
fuente
77
Vale la pena mencionar que el complemento de 2 tiene más ventajas además de solo un número más en el rango, incluso si no entra en detalles de lo que son.
KRyan
77
También podría mencionar una de dichas ventajas en esta sección de comentarios: una de las principales ventajas es que la sustracción (/ suma de números negativos) puede implementarse simplemente pretendiendo que los números no están firmados y agregándolos. No se necesitan casos especiales para la resta = circuitería y lógica mucho más simples. Esta página tiene una buena reseña sobre ese tema.
Jason C
3

00110

David Richerby
fuente
Unos complementan las operaciones de suma o resta con acarreo de extremo a extremo. Por supuesto, lo que se muestra al programador no necesita ser la representación subyacente.
ttw
1
@ttw La pregunta pregunta cuáles son las dos representaciones de cero, por lo que no estoy seguro de dónde entran en juego la suma, la resta y los programadores.
David Richerby
3

Hablar de dos valores diferentes de 0 en el complemento es engañoso. El complemento de uno (y el complemento de dos) son representaciones binarias de números. Describen una forma de representar números en binario y cómo realizar operaciones aritméticas con ellos. El número representado por la secuencia de bits es el valor.

000=00

00011

Martijn
fuente