Hola, mi duda es para la siguiente resta.
En complemento a 2, el -2 se representa como 10.
Mi pregunta es como se resuelve la resta de:
-1 - (-2) en complemento a 2.
Seria
11 11
- o +
(10) 10
Porque como al aplicar el complemento a 2 de (10) me da 10, tendria que darme el mismo resultado sumar que restar, pero en la suma me da overflow y en la resta tiene un resultado que seria valido (-1 - (-2) = 1)
El problema creo que esta que no existe el -(-2) pero no me queda claro.
Muchas gracias
Re: Duda con resta complemento a 2 de dos bits
Gianluca,
No tiene mucho sentido trabajar en complemento a 2 de 2 bits (solo podes representar 4 números: -2, -1, 0, 1), pero la misma situación ocurre en complemento a 2 de N bits, con cualquier N.
Si te fijas en complemento a 2 de N bits siempre hay 1 número negativo cuyo opuesto no se puede representar (porque el 0 viene a tomar una de las codificaciones): es el -2^(N-1), cuyo opuesto no se puede representar.
Para hacer la resta normalmente podes hacer 2 operaciones:
- Aplicar el algoritmo de la resta
- Sumar el opuesto del sustraendo
Y el resultado de ambas operaciones es el correcto siempre que el mismo sea representable, ahora el tema es que en teoría solo podes operar con operandos representables y ahí es donde entra el problema de tu ejemplo.
Si en tu ejemplo aplicamos el algoritmo de la resta, tengo que tanto minuendo como sustraendo son representables y hago esta operación:
11
-10
=== 01
que es 1 y es el resultado corrrecto de -1 - (-2)
Si quiero operar sumando el opuesto del sustraendo tengo el problema que 2 no es representable en complemento a 2 de 2 bits. Entonces a priori no podría hacer la cuenta porque no puedo representar uno de sus operandos. Pero puedo hacer una "trampita" que viene a ser extender los números con los que trabajo y pasar en tu ejemplo a trabajar con números en complemento a 2 de 3 bits. Ahí si puedo representar el 2. Luego tengo que verificar a mano que el resultado sea representable en complemento a 2 de 2 bits:
Entonces represento -1 y 2 en complemento a 2 de 3 bits y hago la suma:
11
111
+010
====
001
y el resultado es 001 que es 1 y se puede representar en complento a 2 de 2 bits.
Podes intentar hacer lo mismo haciendo la cuenta 1 - -2, en este caso el resultado no lo vas a poder representar en complemento a 2 de 2 bits.
Saludos,
Gustavo
Re: Duda con resta complemento a 2 de dos bits
Entendí perfecto muchas gracias, solo una duda mas, ¿Cuál es el resultado entonces de
-1 - (-2) en complemento a 2 de dos bits?.
¿Es 01 o es No representable?
Re: Duda con resta complemento a 2 de dos bits
Es 1.
Lo que no es representable es el número 2. Pero para restar -1 - (-2) no es necesario representar el 2 si usas el algoritmo de la resta.
Saludos,
Gustavo