0% encontró este documento útil (0 votos)
25 vistas8 páginas

Práctica 7. - EC - NúmerosComaFlotante

Este documento presenta una práctica sobre números en coma flotante según el estándar IEEE 754. La práctica incluye 10 pasos para explorar la representación de números en coma flotante, incluyendo visualizar y modificar los bits de números en coma flotante, y analizar un bucle que suma incrementos de 0.1 que ilustra imprecisiones en los cálculos con coma flotante.

Cargado por

Raúl Bacete
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas8 páginas

Práctica 7. - EC - NúmerosComaFlotante

Este documento presenta una práctica sobre números en coma flotante según el estándar IEEE 754. La práctica incluye 10 pasos para explorar la representación de números en coma flotante, incluyendo visualizar y modificar los bits de números en coma flotante, y analizar un bucle que suma incrementos de 0.1 que ilustra imprecisiones en los cálculos con coma flotante.

Cargado por

Raúl Bacete
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

ESTRUCTURA DE

COMPUTADORS

PRÁCTICA 7:

“Números en coma flotante”

Estructura de Computadores. Práctica 7: Números en coma flotante 1


 ASPECTOS TRATADOS: Formato números en coma flotante.

 MATERIAL NECESARIO: Computador personal, entorno programación,


aplicaciones web formatos números coma flotante.

 CONCEPTOS NECESARIOS: Formato IEEE 754.

 DURACIÓN ESTIMADA: 2h
 DESCRIPCIÓN: Desarrollar el software indicado y probar las herramientas
web indicadas.

Estructura de Computadores. Práctica 7: Números en coma flotante 2


DESARROLLO DE LA PRÁCTICA:

1) El siguiente programa permite visualizar la estructura interna de un


número en coma flotante según el estándar IEEE 754. Edita y ejecuta
dicho programa en el entorno CodeLite usado en prácticas anteriores
(instalar el compilador MinGW preferiblemente para 32 bits):
#include <stdio.h>

//EL DATO EN COMA FLOTANTE Y SU ACCESO COMO ENTERO COMPARTEN DIRECCIÓN DE MEMORIA:
union FP
{
float fDato;
int iDato;
};
//******************************************************************************
int main()
{
int i;
union FP ejemplo;
//········································································
ejemplo.fDato = -118.625; //1 10000101 11011010100000000000000

for (i = 31; i >= 0; i--)


{
printf("%d", (ejemplo.iDato & 1<<i)!=0?1:0);
}
return 0;
}

2) Modifica el anterior programa para que permita la entrada del número por
parte del usuario. Comprueba el funcionamiento obteniendo la
representación de los números:
a) 0.0 (incluir el punto decimal para forzar al compilador a interpretar un float en lugar de entero)

b) -0.0 (incluir el punto decimal para forzar al compilador a interpretar un float en lugar de entero)

c) 0.33333333333333333333

d) 0.1

Estructura de Computadores. Práctica 7: Números en coma flotante 3


3) La siguiente versión del programa permite acceder a los bits de la
representación individualmente para cambiar el valor asociado al número
en coma flotante. Ejecuta el programa para verificar y comprender su
funcionamiento:
#include <stdio.h>

//EL DATO EN COMA FLOTANTE Y SU ACCESO COMO ENTERO COMPARTEN DIRECCIÓN DE MEMORIA:
union FP
{
float fDato;
int iDato;
};
//******************************************************************************
int main()
{
int i;
union FP ejemplo;

//··············································································
············
ejemplo.fDato = 0.5;
printf("El dato original es: %f\n", ejemplo.fDato);

ejemplo.iDato += 100;
printf("El dato final es: %f", ejemplo.fDato);
}

4) Utilizando el principio visto en el programa anterior, haz que visualice los


números en coma flotante representados como (recomendación: utiliza el
formato hexadecimal para la introducción de los valores):

a) 0 11111111 00000000000000000000000

b) 0 11111111 00000000000000000000001

c) 01111111011111111111111111111111

d) 10000000010000000000000000000001

Estructura de Computadores. Práctica 7: Números en coma flotante 4


5) El siguiente programa implementa un bucle que comienza en 0, y en
pasos de 0.1 llega hasta 1.0:
#include <stdio.h>

int main ()
{
float inc = 1.0/10.0;
float val = 0.0;
float end = 1.0;
float sum = 0.0;

printf ("Programa que implementa un bucle desde: %22.15f \nhasta: %22.15f \nen
incrementos de: %22.15f\n", val, end, inc);
printf("Pulsa una tecla para continuar\n");
getchar();

while (val != end)


{
sum += val;
printf ("val = %22.15f; sum = %22.15f\n", val, sum);
val += inc;
}

printf ("Fin de bucle alcanzado con val = %22.15f; sum = %22.15f\n", val, sum);

6) Explica a continuación en detalle cuál es el funcionamiento esperado del


programa sin ejecutarlo, incluyendo los valores esperados mostrados en
pantalla:

Estructura de Computadores. Práctica 7: Números en coma flotante 5


7) Edita y ejecuta el programa para comprobar su funcionamiento. Describe
qué es lo que ocurre:

8) Cambia la condición del while a (val<=end). Describe de nuevo en detalle


qué ocurre y justifica los valores que aparecen en pantalla:

Estructura de Computadores. Práctica 7: Números en coma flotante 6


9) Cambia el tipo de las variables de float a double en el programa original.
Describe a continuación qué ocurre en este caso:

10) Modifica el programa original para que el funcionamiento y los


resultados sean los esperados. Inserta el código resultante a continuación:

Estructura de Computadores. Práctica 7: Números en coma flotante 7


Estructura de Computadores. Práctica 7: Números en coma flotante 8

También podría gustarte