Tamaño: 2915
Comentario:
|
Tamaño: 2908
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 85: | Línea 85: |
Expresar en hexadecimal la representación de $$$58,75_2$$ en formato float | Expresar en hexadecimal la representación de 58,75 en formato float |
Trabajo Práctico Nro.7 Punto Flotante
Ejercicio 1
Convertir en numero 234,625 en formato de float y double
Solución
En primer lugar calculamos
separamos el exponente en parte entera y decimal
La mantisa calculada está comprendida entre 1 <= m < 2, como corresponde a un número normalizado, resta ahora codificar cada elemento del número.
Mantisa
La debemos pasar a binario
0,8330078125 |
x 2 |
1,666015625 |
0,666015625 |
x 2 |
1,33203125 |
0,33203125 |
x 2 |
0,6640625 |
0,6640625 |
x 2 |
1,328125 |
0,328125 |
x 2 |
0,65625 |
0,65625 |
x 2 |
1,3125 |
0,3125 |
x 2 |
0,625 |
0,625 |
x 2 |
1,25 |
0,25 |
x 2 |
0,5 |
0,5 |
x 2 |
1 |
el valor final será
1,1101010101
el valor en la mantisa a almacenar solo posee los valores a la derecha de la coma
mantisa para float |
11010101010000000000000 |
mantisa para double |
110101010100000000000000000000000000000000 |
Como vemos es muy importante evitar el redondeo, el mismo puede producir un error en los bit menos significativos y en este caso al no caer a 0 deberíamos haber seguido calculando hasta el bit 23 para float o 52 para double
exponente
La codificación del exponente exige que le sumemos al valor calculado un corrimiento, este corrimiento es la mitad del máximo valor que se puede guardar según el tipo de numero
float
exponente para float |
134 |
10000110 |
exponente para double |
1030 |
10000000110 |
signo
el signo en este caso es positivo = 0
resultado
float
31 |
30 23 |
22 0 |
0 |
10000110 |
11010101010000000000000 |
double
63 |
62 52 |
51 0 |
0 |
10000000110 |
1101010101000000000000000000000000000000000000000000 |
Ejercicio 2
Expresar en hexadecimal la representación de 58,75 en formato float
Solución: 0x426B0000
Ejercicio 3
Expresar en hexadecimal la representación de 4580 en formato float y double
Solución: 0x458F2000 y 0x40B1E40000000000
Ejercicio 4
Realizar un programa en assembler que reciba como argumento un número de 32 bits entero y con signo y devuelva el valor transformado a float.