[Práctico 1][Ejercicio 8]

[Práctico 1][Ejercicio 8]

de Carlos Benito Musetti Puig -
Número de respuestas: 2

Buenas, en este ejercicio se pide realizar una suma hexadecimal y dar los valores de  determinados bits.

No estoy seguro de haber entendido bien el concepto de los bits Z,N,C,V pedidos (condición,negativo, acarreo y overflow).

El bit de acarreo entendí era el ultimo carry de la suma (en este caso hexadecimal). El bit de overflow, que toma el valor de 1 si la suma no se puede representar y 0 si el resultado de la suma es representable. El bit de condición, que indica si el resultado da cero y el bit de negativo si el resultado es negativo. ¿Estoy en lo correcto? 

Por ejemplo, la segunda suma pedida es CAFE + B007 que me dio como resultado 7|0B05. 

En este caso, el bit de overflow seria uno, pero el ultimo acarreo es 7h, que seria 0111 en binario, es decir, mas de un bit. Para hacer el ejercicio,¿tengo que pasar los numeros a binario, operar, y luego pasar el resultado a hexadecimal? No se me ocurre otra forma de que el acarreo sea de un bit. Tampoco se me ocurre como darme cuenta si un numero hexadecimal representado en complemento a dos es negativo sin pasarlo a binario.

Gracias de antemano


En respuesta a Carlos Benito Musetti Puig

Re: [Práctico 1][Ejercicio 8]

de Gustavo Brown -

Carlos,

  Lo que se pide es realizar la suma en complemento a 2 de los números que están expresados en hexadecimal. El carry va a ser un bit (el bit que se va en la suma binaria).

Cuando sumas dos números de N bits, el resultado es un número de N+1 bits, que en este caso lo partimos en el resultado de N bits y el bit de carry. El resultado que obtuviste para  CAFE + B007 que es la suma de 2 números de 16 bits no puede darte más de 1FFFF (que son 17 bits), de los cuales el 17avo es el carry y el resultado que dejas son los 16 bits.

Mi sugerencia es que pases los numeros de 16 bits expresados en hexadecimal a binario, luego computes las sumas (y te quedas con los 16 bits menos significativos como resultado) y de ahí obtenés los bits Z, N, C y V donde

Z vale 1 si el resultado dio 0 

N vale 1 si el resultado dio negativo (bit más significativo en 1)

C vale el ultimo acarreo de la suma binaria

V vale 1 si al interpretar el resultado que obtuviste no es el resultado correcto de la suma (y por tanto desbordó la suma)

Saludos,
  Gustavo