P1 - Ejercicio 6

P1 - Ejercicio 6

de Gonzalo Javier Diaz Ferreira -
Número de respuestas: 2

Buenas noches, 


Voy a poner el ejercicio a) para ver si coincidimos ya que no sé si estoy interpretando bien los parámetros Z, N, C y V. 


suma de 0x2977 y 0x5689

los paso a binario (16 bits):  0010 1001 0111 0111

                                          + 0101 0110 1000 1001

                                          _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

                                             1000 0000 0000 0000

Como el número supera el límite 32768 (al ser negativo) entiendo que existe overflow, por lo tanto, V = 1. 

A su vez, el bit significativo es 1, por lo que es negativo, N = 1. 

Lo que no estoy muy seguro es Z y C... entiendo que Z = 0 porque la suma no da cero, es así?

y con respecto a C, el último bit de acarreo es 1, ya que arrastra el 1 hasta el final, entonces: C = 1??

Espero su ayuda. 


Gracias!

Saludos

Gonzalo 

   


En respuesta a Gonzalo Javier Diaz Ferreira

Re: P1 - Ejercicio 6

de Federico Rivero -
Buen día Gonzalo!

Z = 0 es correcto por la explicación que diste. Z vale 1 solo cuando el resultado es todo 0.

C guarda el valor del carry out, es decir, del carry desde el bit más significativo hacia el primer bit que se truncaría al a izquierda. En la cuenta no escribiste su valor, pero es 0 (porque en el bit más significativo la cuenta queda: 1 que te llevabas + 0 + 0 = 1, entonces no hay carry out).

Saludos,
Federico
En respuesta a Gonzalo Javier Diaz Ferreira

Re: P1 - Ejercicio 6

de Franco Pelua Camacho -
Hola! aprovecho el hilo de este ejercicio para hacer una pregunta de la parte 6d)

Suma de 0x5789 y -0x021F en complemento a 2.

Entiendo que en el caso en el que los dos operandos son positivos, según el criterio del complemento a 2 (si el primer bit es cero, entonces es positivo), vale simplemente sumar con la aritmética de la base en cuestión (en este caso, base 16). Pero cuando uno de los operandos es negativo, como en este caso, me imagino que eso ya no vale, ¿no? Lo que entiendo que tendría que hacer con el operando negativo sería aplicarle complemento a 2 (al valor absoluto del negativo) y sumarlo al operando positivo. Yo hice eso de la siguiente manera:

 -0x021F = -(0000 0010 0001 1100)_{(2} Luego, aplicando complemento a 2 al número en binario, obtengo que el complemento a 2 de  0x021F es  1111 1101 1110 0100_{(2} = 0xFDE4 (Para aplicar complemento a 2 use la regla mnemotécnica que te dice que copies el número de derecha a izquierda hasta que encuentres el primer uno, y después gires todos los bits).

Habiendo obtenido el complemento a 2, ahora lo sumo al primer operando y eso sería el resultado de la suma inicial. Entonces terminaría tal que 0x5789 + 0xFDE4 = 0x556D considerando que tengo C = 1, V = 0, Z=0, N = 0. ¿Este procedimiento y resultado están bien?

Gracias de antemano, saludos.