Autor |
Mensaje |
loonatic
Nivel 9
Edad: 32
Registrado: 16 May 2009
Mensajes: 1256
Carrera: Sistemas
|
|
El ejercicio dice "dados los numeros A y B, realizar la suma y resta de ambos en binario punto fijo sin signo de 32 bits, e indicar la validez del resultado."
Bueno mi duda es: para la primera parte paso A y B a base binaria. Luego agrego ceros a izquierda para completar los 32 bits. Ahora, cuando tengo que hacer la resta (A-B=A+Bcomp), para hallar Bcomp tengo que cambiar todos los ceros que habia agregado antes por unos. Entonces cuando hago A+Bcomp me quedan muchos unos al principio :s y esta mal. Como se hace entonces?
|
|
|
|
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
Te van a quedar muchos unos o no dependiendo de si A es más grande en módulo que B o no.
Fijate que si A es mayor a B, tu cálculo debería dar un número con el bit 33 (OV) en 1 y el 32 en 0. O sea, mirado como de 32 bits, un número postivo.
|
|
|
|
_________________
|
|
|
|
|
loonatic
Nivel 9
Edad: 32
Registrado: 16 May 2009
Mensajes: 1256
Carrera: Sistemas
|
|
Perdon, si ya entendi, estaba haciendo mal las cuentas, por eso no me daba. Lo de "indicar la validez" se refiere a si los dos ultimos bits de acarreo en las cuentas son iguales, no?
Saludos!
|
|
|
|
|
|
|
|
|
loonatic
Nivel 9
Edad: 32
Registrado: 16 May 2009
Mensajes: 1256
Carrera: Sistemas
|
|
En referencia al ejercicio de más arriba, este es el unico que no me sale:
A = 20 (base 8 ) = 010000 (base 2)
B = AF11 (base 16) = 1010111100010001 (base 2)
Cuando hago A+B me dá bien, pero cuando hago A-B me da un numero horrible con muchos 1 al principio, y en teoría (segun el resuelto) no se puede hacer la resta. Help!
|
|
|
|
Última edición por loonatic el Dom Ago 29, 2010 11:18 pm, editado 1 vez
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
Donde antes dijiste 32 bits iba 16, ¿no?
No puede hacerse la resta porque el número positivo tiene un 1 en el bit de signo. O sea, te da un overflow cuando le hacés el complemento a la base. Era un número que hubieras podido representar como unsigned, pero no como signed.
Esto en 16, en 32, no hay ningún inconveniente.
|
|
|
|
_________________
|
|
|
|
|
loonatic
Nivel 9
Edad: 32
Registrado: 16 May 2009
Mensajes: 1256
Carrera: Sistemas
|
|
Sebastian Santisi escribió:
|
Donde antes dijiste 32 bits iba 16, ¿no?
No puede hacerse la resta porque el número positivo tiene un 1 en el bit de signo. O sea, te da un overflow cuando le hacés el complemento a la base. Era un número que hubieras podido representar como unsigned, pero no como signed.
Esto en 16, en 32, no hay ningún inconveniente.
|
No, era 32 bits. En el resuelto dice "no se puede representar A-B".
|
|
|
|
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
¿Cómo no va a poderse?... o sea, un número de 4 dígitos hexa contra uno de 2 octales (1 hexa), no tiene ningún problema, el resultado como mucho va a ocupar 17 bits.
Por el número que representa B, yo diría que están pensando en 16 bits de cajón.
|
|
|
|
_________________
|
|
|
|
|
loonatic
Nivel 9
Edad: 32
Registrado: 16 May 2009
Mensajes: 1256
Carrera: Sistemas
|
|
Si, puede ser. Lo voy a consultar en clase.
Gracias por responder.
|
|
|
|
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
Observación: No hay ninguna cuenta que no puedas hacer en binario que no puedas hacer en decimal. Lo único que te condiciona es que el resultado después quepa en los bits que hacen falta. El resultado de esa cuenta cumple la condición .
|
|
|
|
_________________
|
|
|
|
|
|