Autor Tema: Representación de numeros decimales en punto flotante base 2,base 8 y base 16

0 Usuarios y 1 Visitante están viendo este tema.

05 Septiembre, 2008, 02:32 pm
Leído 3982 veces

cristianll

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 236
  • Karma: +0/-0
  • Sexo: Masculino
Hola, tengo una duda, estoy haciendo un ejercicio que me pide que dependiendo de una palabra de 36 bits(1 para el signo,8 para el exponente y 27 para la mantisa) represente el número de decimal en formato de punto flotante de base 2,8 y 16.
El número es \( 96,2587_{10} \), lo paso a binario y me queda \( 1100000,010000100011010001010011100..._2 \) , ahora lo normalizo al número en binario y me queda \( .1100000010000100011010001010011100...\,x\,2^{7} \), entonces la representación en punto flotante me queda: \( 0\;10000111\;110000001000010001101000101... \), esto sería en base 2.
En base 8 traté de normalizar el número \( 1100000,010000100011010001010011100..._2 \) pero no puedo, corro la coma de 3 en 3, y llego a \( 1.100000010000100011010001010011100... \) y si la corro otro lugar más queda \( .001100000010000100011010001010011100... \), pero no está normalizado,no está entre \( [0.5;1) \), me pasa lo mismo con base 16, el número que me queda cuando trato de normalizar es \( ,01100000010000100011010001010011100... \).
Qué debo de hacer o estoy haciendo algo mal?
Saludos y muchas gracias.

05 Septiembre, 2008, 04:26 pm
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 Nunca vi representación en punto flotante en base ocho o hexadecimal, aunque se intuye como funciona.

 Pasar de binario a base ocho es fácil porque basta agrupar de 3 en 3 (por eso supongo haces lo que haces  ;) ).

 Parar pasar de binario a hexadecimal agrupamos de cuatro en cuatro.

 Ahora bien, en general en el caso de base \( b \) para normalizar, neceistamos que la mantisa del número esté entre \( [\dfrac{1}{b},1) \).

 Por tanto en base ocho necesitamos que estén en \( [0'125,1). \)

 En tu caso:

\(  0.0011...=\dfrac{1}{2^3}+\dfrac{1}{2^4}+\ldots>0.125 \)

Saludos.

05 Septiembre, 2008, 04:36 pm
Respuesta #2

cristianll

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 236
  • Karma: +0/-0
  • Sexo: Masculino
Hola, muchas gracias el_manco, ya entendí cómo hacerlo, estaba relizando mal la cuenta, una pregunta, cdo te dan el número en punto flotante por ejemplo \( 0\;00111110\;100011110101... \) y piden pasarlo a decimal quedaría el primero es el 0 que es el signo, en este caso es positivo, luego lo que sigue es el exponente y como está expresado mediante exceso \( 2^{n-1} \) el signo en este caso es negativo y me queda el exponente en \( -66 \) , pero lo que no logro comprender es como calcular la mantisa acá, cómo se realiza? Muchas gracias.

05 Septiembre, 2008, 04:57 pm
Respuesta #3

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 La mantisa es fácil. Si es:

\(  100011110101... \)

 pues pasas el número:

\(  0.100011110101... \)

 de binario a decimal:

\(  x=1\cdot \dfrac{1}{2}+0\cdot \dfrac{1}{2^2}+0\cdot \dfrac{1}{2^3}+0\cdot \dfrac{1}{2^4}+1\cdot \dfrac{1}{2^5}+\ldots \)

 tu número es:

\(  x\cdot 10^{-66} \)

 En algunos casos se representa la mantisa con "bit fantasma" es decir, como siempre empieza por 1, pues ese 1 no se escribe. Así si aparece almacenado

\(  100011110101... \)

 en realidad se refiere al número en base dos:

\(  0.\color{red}1\color{black}100011110101 \)

 Pero eso depende del tipo de representación que te hallan explicado.

Saludos.

05 Septiembre, 2008, 05:23 pm
Respuesta #4

cristianll

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 236
  • Karma: +0/-0
  • Sexo: Masculino
Entonces quedaría \( x=0.559814453 \), luego \( 0.559814453\cdot{}10^{-66} \) ?? Lo de bit fantasma no me lo han enseñado. Gracias.

05 Septiembre, 2008, 05:31 pm
Respuesta #5

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 Si la mantisa es:

\( 100011110101 \)

 aquí a mi ordenador no le da eso, sino:

\( 0.559814\cdot 10^{-66} \)

 Pero las cuentas son lo de menos. La idea es la de antes.

 Por cierto corregí mi mensaje anterior porque con tanto cero y sin merendar me comi uno.

Saludos.

05 Septiembre, 2008, 05:34 pm
Respuesta #6

cristianll

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 236
  • Karma: +0/-0
  • Sexo: Masculino
Sí, me dí cuenta porque me guié por la expresión que faltaba ese cero para calcular el decimal, pero ya lo arreglé el resultado, me di cuenta porque contando con el bit fantasma que agregaste daban la misma cantidad de bits. Muchas gracias. Saludos.