Qué son los bits de condición Z (cero) y N (negativo)?
Estimado:
Los bits de condición (o flags) son bits que dan información adicional sobre el resultado de una operación. La flag Z vale 1 si el resultado es 0, y la flag N vale 1 si el resultado es negativo.
Saludos!
Federico
Gracias!
Otra consulta más: en este mismo ejercicio se dan 4 operaciones (con números hexadecimales) y se pide realizarlas en notación complemento a 2.
Esto significa que si la operación es CAFE + B007 tengo que pasar ambos números de hexadecimal a binario, hacer el complemento, sumarle uno, y una vez que estén en complemento a 2 sumarlos?
No. Significa que los números ya están representados en complemento A2. Tenés que pasarlos a binario y hacer la suma binaria; luego interpretar el resultado en complemento A2.
Para saber si hubo overflow podés interpretar los operandos en complemento A2 y verificar que el resultado de la suma binaria, interpretada en complemento A2, sea consistente. Si no es consistente es porque hubo overflow. Mirando los últimos 2 acarreos de cada operación podes determinar la regla que debe cumplir la bandera de overflow para sumas de números en complemento A2.
La última operacion es una resta (0x5789 - 0x021F) que es equivalente a 0x5789 + (-0x021F), por lo que en este caso podés aplicarle el complemento A2 a 0x021F para obtener el opuesto (-0x021F) y luego hacer la suma con 0x5789
Saludos,
Gustavo
Entonces en el caso de CAFE + B007:
(CAFE)16 ---> (1100 1010 1111 1110)2 = representación en complemento a dos de un número N.
Entonces N = 0011 0101 0000 0010.
(B007)16 ---> (1011 0000 0000 0111)2 = representación en complemento a dos de un número M.
Entonces M = 0100 1111 1111 1001.
Por lo que la suma de las representaciones es:
1100 1010 1111 1110
+ 1011 0000 0000 0111
-------------------------------
1 0111 1011 0000 0101
Y la suma de N+M es:
0011 0101 0000 0010
+ 0100 1111 1111 1001
-------------------------------
1000 0100 1111 1011
Como en la suma de las representaciones tengo carry=1 y en la de los números carry=0, hago un XOR y obtengo 1, por lo que hubo overflow. Es así? ¿Es el mismo caso al revés, si no hubiera habido carry en la suma de las representaciones pero sí en el de los números?
Gracias desde ya.