¿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?


8
0 no tiene dos valores. Tiene el valor 0. Período. Lo que sí 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=00000100−4=11111011

  • 0=00000000−0=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+127−1
  • −2727−1

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

0…01…1−0


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.

0−00=−00

00…01…1

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.