Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Info 1 - TP 1] Ayuda con punto flotante!!!
Autor Mensaje
Gonsha Sin conexión
Presidente del CEIT
Wub Wub Nation
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.492
Agradecimientos dados: 167
Agradecimientos: 581 en 46 posts
Registro en: Mar 2012
Mensaje: #1
[Info 1 - TP 1] Ayuda con punto flotante!!! Dudas y recomendaciones Informática I (Electrónica)
Hola gente.

Bueno queria hacerles una consulta de unos ejercicios que hay que emplear punto flotante. Por ejemplo, en el ejercicio 7 del TP N° 1, que dice:

Expresar en Base 10 los siguientes números dados en forma de Punto Flotante Precisión Simple.

Y te da el siguiente numero: 35C1F.

¿Como se resuelve eso? Tengo una idea pero no es muy clara.

Y vamos con otro, pero que es el proceso inverso.

Expresar en punto flotante simple precisión los números siguientes expresados en base 10.

Y nos da este numero: 165,625.

Eso es todo por ahora.

Saludos y muchas gracias.
04-05-2012 14:50
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Drarko Sin conexión
Secretario de la SAE

******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 657
Agradecimientos dados: 6
Agradecimientos: 88 en 55 posts
Registro en: Jun 2009
Mensaje: #2
RE: [Info 1 - TP 1] Ayuda con punto flotante!!!
Coma flotante de Simple Precision, son 4 bytes.

Por lo que el numero en realidad es 35C1F000

35C1F000 convertido a binario:

00110101110000011111000000000000

Y ahora dividimos en: 1 bit de signo, 8 de exponente, 23 de mantisa

0|01101011|10000011111000000000000

Signo: 0 -> +1
Exponente: 01101011 -> 107 -> le restamos el exceso -> 107 - 127 = -20 -> como son potencias de 2 nos quedamos con -> 2^-20
Mantisa: 10000011111000000000000 -> 2^-1+2^-7+2^-8+2^-9+2^-10+2^-11 = 0.515136719 -> Se le suma 1 -> 1.515136719

Multiplicamos todo:

+1 * 2^-20 * 1.515136719 = 1.44494697 E -6

-----------------------------------------------
El camino inverso:

Tenemos 165,625

Buscamos su signo: +1 -> 0

Transformamos el numero sin el signo a binario

165,625 -> 10100101,101

Exponente:
Desplazamos la coma hasta dejar solo un 1 a la izquierda

1,0100101101 -> 7 lugares -> Mantisa: 0100101101
Exponente: 7 -> Desplazado en 127 -> 127+7 = 134 -> En binario: 10000110

Armamos el numero

0|10000110|0100101101 -> completamos con ceros hasta los 4 bytes

01000011001001011010000000000000 -> En hexa: 4325A000 -> 4325A

-------------------------------------------------
Podes comprobar los resultados aqui: http://www.h-schmidt.net/FloatConverter/IEEE754.html

Drarko

Ingeniería es UTN. El país es nuestro Campus

Los datos experimentales son aquellos que, una vez tomados, se les suma o resta una cantidad, multiplica o divide por algún número, hasta que dan lo que tenían que dar.
(Este mensaje fue modificado por última vez en: 04-05-2012 20:01 por Drarko.)
04-05-2012 19:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Gonsha Sin conexión
Presidente del CEIT
Wub Wub Nation
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.492
Agradecimientos dados: 167
Agradecimientos: 581 en 46 posts
Registro en: Mar 2012
Mensaje: #3
RE: [Info 1 - TP 1] Ayuda con punto flotante!!!
(04-05-2012 19:58)Drarko escribió:  Coma flotante de Simple Precision, son 4 bytes.

Por lo que el numero en realidad es 35C1F000

35C1F000 convertido a binario:

00110101110000011111000000000000

Y ahora dividimos en: 1 bit de signo, 8 de exponente, 23 de mantisa

0|01101011|10000011111000000000000

Signo: 0 -> +1
Exponente: 01101011 -> 107 -> le restamos el exceso -> 107 - 127 = -20 -> como son potencias de 2 nos quedamos con -> 2^-20
Mantisa: 10000011111000000000000 -> 2^-1+2^-7+2^-8+2^-9+2^-10+2^-11 = 0.515136719 -> Se le suma 1 -> 1.515136719

Multiplicamos todo:

+1 * 2^-20 * 1.515136719 = 1.44494697 E -6

-----------------------------------------------
El camino inverso:

Tenemos 165,625

Buscamos su signo: +1 -> 0

Transformamos el numero sin el signo a binario

165,625 -> 10100101,101

Exponente:
Desplazamos la coma hasta dejar solo un 1 a la izquierda

1,0100101101 -> 7 lugares -> Mantisa: 0100101101
Exponente: 7 -> Desplazado en 127 -> 127+7 = 134 -> En binario: 10000110

Armamos el numero

0|10000110|0100101101 -> completamos con ceros hasta los 4 bytes

01000011001001011010000000000000 -> En hexa: 4325A000 -> 4325A

-------------------------------------------------
Podes comprobar los resultados aqui: http://www.h-schmidt.net/FloatConverter/IEEE754.html

Muchas gracias. Entonces la idea que yo tenia era correcta. La forma en que yo "lo sabia" hacer era de la siguiente forma, te explico así vos me decís que opinas:

Yo tengo el numero no se, por poner un ejemplo, 250,32 en decimal.

1) Lo paso a binario y me queda (por ejemplo): 10001001,100100
2) Corro la coma hasta que me quede a la izquierda un 1 --> 1,0001001100100 (2^-7)
3) La mantisa va ser 00010011001000000000000 (1+2^-4+2^-7+2^-8+2^-11)
4) El exponente va a ser: 127 + 7 : 134 (01101001, por ejemplo) (2^7)

Y el numero, entonces en punto flotante va a ser: 0 0001001100100 00010011001000000000000

Y el inverso es lo mismo pero al revés (mas fácil). Saludos y gracias!
05-05-2012 01:17
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
guille769 Sin conexión
Empleado del buffet
quemando pestañas!!
*

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1
Agradecimientos dados: 1
Agradecimientos: 0 en 0 posts
Registro en: May 2012
Mensaje: #4
RE: [Info 1 - TP 1] Ayuda con punto flotante!!!
Coma flotante de Simple Precision, son 4 bytes(32 bits= 1 para signo 8 para el exponente 23 para mantisa).

El numero que te dan es 00035C1F El usuario Drako lo completo al revés
00035C1F convertido a binario:

0000 0000 0000 0011 0101 1100 1111

Y ahora dividimos en: 1 bit de signo, 8 de exponente, 23 de mantisa

0 ! 0000 0000 ! 0000 0110 1011 1000 0011 111

Signo: 0 -> +1(positivo)
Exponente: 0000 0000 (Desnormalizado) -> Equivale al -126. Fijate siempre que te de este exp estas en el caso de "Desnormalizados" (esta bastante entendible en Wikipedia ;))
Mantisa: -> 2^-6+2^-7+2^-9+2^-11+2^-12+2^-13+2^-19+2^-20+2^-21+2^-22+2^-23 = 0,02624881268 (en este caso no se le suma 1, solo va si es Noramalizado)

Multiplicamos todo:

+1 * 2^-126 * 0,02624881268 = 3,0855 E -40

Fijate que el caso Del 165.625 El usuario Drako completo los ceros para completar los 4 bytes a la derecha en el campo
mantisa, eso esta bien, esos ceros no cambian la magnitud del numero ya que son ceros a derecha de la coma, y despues del ultimo digito con "peso"; es por eso que en este caso el num 00035C1F no es igual que el 35C1F000 ya que no hay ninguna coma.

Yo estuve haciendo del mismo TP el 3ED, pense que por la pinta iba a ser sencillo, el ayudante de catedra me paso el resultado que le paso el profe para que el corrija despues y da 1.408 E -42 fijate con esa a ver si te da asi.

Espero que haberte ayudado. Saludos thumbup3

¨La Matemática es el trabajo del espiritu humano que esta destinado tanto a estudiar como a conocer, tanto a buscar la verdad como a encontrarla¨(E. Galois)
06-05-2012 16:16
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Drarko Sin conexión
Secretario de la SAE

******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 657
Agradecimientos dados: 6
Agradecimientos: 88 en 55 posts
Registro en: Jun 2009
Mensaje: #5
RE: [Info 1 - TP 1] Ayuda con punto flotante!!!
(06-05-2012 16:16)guille769 escribió:  Fijate que el caso Del 165.625 El usuario Drako completo los ceros para completar los 4 bytes a la derecha en el campo
mantisa, eso esta bien, esos ceros no cambian la magnitud del numero ya que son ceros a derecha de la coma, y despues del ultimo digito con "peso"; es por eso que en este caso el num 00035C1F no es igual que el 35C1F000 ya que no hay ninguna coma.

(04-05-2012 19:58)Drarko escribió:  01000011001001011010000000000000 -> En hexa: 4325A000 -> 4325A

Yo completo a la derecha, es lo correcto y despues corto del numero.
Fijate que si no completas queda: 0100001100100101101, por lo que para transformarlo a hexa te falta un cero.
Ahora, si yo cuando paso de decimal a hexadecimal de Simple Precision, completo con ceros a la derecha, en el proceso inverso TAMBIEN tengo que completar con ceros a la derecha, osea ese 35C1F lo tengo que tomar como 35C1F000 ya que los ceros que le agrego, como bien decis vos, se agregan a la mantisa, a la derecha de la coma.

El año pasado fui ayudante del curso de Fernando Lage (jefe de catedra de Info I) y ese es el criterio que se toma, completar a la derecha.

Drarko

Ingeniería es UTN. El país es nuestro Campus

Los datos experimentales son aquellos que, una vez tomados, se les suma o resta una cantidad, multiplica o divide por algún número, hasta que dan lo que tenían que dar.
06-05-2012 23:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Diesel Sin conexión
Campeon del cubo Rubik
5to año loading
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 119
Agradecimientos dados: 82
Agradecimientos: 225 en 20 posts
Registro en: Sep 2012
Mensaje: #6
RE: [Info 1 - TP 1] Ayuda con punto flotante!!!
buenas ! otra vez yo.. reviviendo viejos post... tengo una consulta para el 2do ejercicio de drako
165,625
en punto flotante de press simple es
0 10000110 01001011010000000000000
lo entendi perfecto thumbup3thumbup3thumbup3thumbup3

ahora si yo qiero hacer el paso inverso con este mismo ejemplo no llego nunca a 165,625... tendria que llegar?
mira lo hago aca
0 10000110 01001011010000000000000

0 signo + =P
10000110 en decimal es el numero 134 - 127 = 7.... o sea que voy a tener 2^-7 love
01001011010000000000000 aca hago la falopeada esa 2^-2 + 2^-5 + 2^-7+ 2^-8 + 2^-10= 0,293945312 + 1 =1 ,293945312
ahora hago 1,293945312 * 2 ^-7 y da 0,010108947 .... y ese numero no se parece ni un poco a 165,625 .... ya estoy re duro nosewall


EDIT: RESUELTO !!! el 7 era positivo !!!! ojo ! al hacer 1,293945312 * 2 ^7 da =D .... soy feliz, gracias gente ! arre
(Este mensaje fue modificado por última vez en: 18-02-2014 02:09 por Diesel.)
18-02-2014 02:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.