[2018][Febrero][Problema2]

[2018][Febrero][Problema2]

de Rodrigo Alejandro Aguillon Stoletniy -
Número de respuestas: 3

Buenas, tengo una consulta, ¿en este caso no seria if(signo==0), en lugar de signo==1?, si esta bien en la solucion, no me estaria terminando de quedar claro el motivo de esto 

En respuesta a Rodrigo Alejandro Aguillon Stoletniy

Re: [2018][Febrero][Problema2]

de Gustavo Brown -
Si. Está al revés la pregunta del signo al final de todo.

Saludos,
Gustavo
En respuesta a Gustavo Brown

Re: [2018][Febrero][Problema2]

de Nicolas Grosso San Roman -
Hola! Es necesario hacer el & 0x1FFFF de la última línea? Entiendo que eso hace la máscara para los primeros 17 bits, que son los que necesitamos, pero en los restantes 15 bits no hay ceros?
En respuesta a Nicolas Grosso San Roman

Re: [2018][Febrero][Problema2]

de Gustavo Brown -

No hay ceros porque la expresión -entera en 

ROM[1<<31|codExp<<23|frac] = (-entera + overflow) & 0x1FFFF;

aplica el complemento a 2 del número con lo cual rellena (en binario) a la izquierda todo con 1.

De hecho la sentencia igualmente está mal y deberia decir

ROM[1<<31|codExp<<23|frac] = (-entera & 0xFFFF ) | overflow;
Es decir, aplicar la máscara a solamente a -entera y luego agregarle el bit de overflow porque sino el número cuando es negativo (y no tiene overflow) igualmente queda marcado como con overflow. 

Saludos,
  Gustavo