OPEN KNOWLEDGE CURSO DE METODOS NUMERICOS Juan F. Dorado Diego F. López Laura B. Medina Juan P. Narvaez Roger Pino Universidad de San Buenaventura, seccional Cali
OPEN KNOWLEDEGE CURSO DE METODOS NUMERICOS CONVERSIONES DE BASE DECIMAL A ESTANDAR IEEE754 DE ESTANDAR IEEE754 A BASE DECIMAL Universidad de San Buenaventura, seccional Cali.
CONCEPTOS BÁSICOS Sistema/base decimal: El sistema de numeración decimal, también llamado sistema decimal, es un sistema de numeración posicional en el que las cantidades se representan utilizando como base aritmética las potencias del número diez. 1 Sistema/base IEEE754: El estándar del IEEE para aritmética en coma flotante (IEEE 754) es el estándar más extendido para las computaciones en coma flotante, y es seguido por muchas de las mejoras de CPU y FPU. El estándar define formatos para la representación de números en coma flotante (incluyendo el cero) y valores desnormalizados, así como valores especiales como infinito y NaN, con un conjunto de operaciones en coma flotante que trabaja sobre estos valores. También especifica cuatro modos de redondeo y cinco excepciones (incluyendo cuándo ocurren dichas excepciones y qué sucede en esos momentos). 2
Convertir un numero en base decimal a estandar IEEE754 El formato del número IEEE está compuesto por 32 bits: El primer bit es el signo del número, 0 positivo y 1 si es negativo Los siguientes 8 bits conforma el exponente del número Y por último los 23 bits restantes representan la mantisa del mismo Ejemplo Pasar a estandar IEEE 754 el siguiente número, -78,625 Imagen 1: estructura del formato IEEE 754 1. Vemos si es negativo o positivo como en este caso es negativo entonces el primer bit será un 1 2. El segundo paso es hallar la mantisa, esto se hace utilizando el número 78,625 para esto primero pasamos dicho número a binario a. Para pasar a de decimal a binario tomamos primero la parte entera y por divisiones sucesivas la pasamos a binario 78/2=39 ->0 39/2=19,5 ->1 19/2=9,5 ->1 9/2=4,5 ->1 4/2=2 ->0 2/2=2 ->1 Entonces tomamos de abajo hacia arriba y ese sería el numero decimal en binario, en este caso seria 1001110 b. Ahora pasamos a la parte fraccionaria, para esto utilizamos multiplicaciones sucesivas, en caso de que aparezca una parte entera la tomamos y la reemplazamos por 0 en el numero 0,625*2=1,250 ->1 0,250*2=0,500 ->0 0,500*2=1,000 ->1 Entonces tomamos de arriba hacia abajo y nos queda entonces 0,101 El numero 78,625 seria 1001110,101 en base binaria
3. Después pasamos este binario a notación científica, 1001110,101*2^0 quedaría entonces como 1,001110101*2^6 vemos que la coma se corrió 6 espacios hacia la izquierda, luego este número lo sumamos con lo sumamos a 127, entonces 6+127 nos daría 133, ahora este número lo pasamos a binario 133/2=66,5->1 66/2=33 ->0 33/2=16,5 ->1 16/2=8 ->0 8/2=4 ->0 4/2=2 ->0 2/2=1 ->0 1/2=0,5 ->1 Entonces este el 133 en decimal seria 10000101 en binario Nos queda entonces que el exponente es 10000101, el número es 1,001110101 pero para la mantisa solo tomamos la parte de la derecha de la coma y el exponente era 1 ya que el numero era negativo, poniendo todo esto junto seria 1 10000101 001110101 notamos que nada más hemos usado 9 bits de la mantisa, llenamos el resto con 0 hasta llegar a los 23 bits de la mantisa y asi nos quedaría entonces el siguiente numero que sería el numero en formato IEEE: 1 10000101 00111010100000000000000
Convertir un numero en estandar IEEE754 a base decimal Pasa a base decimal el siguiente número 1 10000101 00111010100000000000000 1. El primer bit es 1 entonces sabemos que el número es negativo 2. Tomamos los siguientes 8 bits (10000101) para hallar el exponente, de izquierda a derecha vamos tomando cada número y lo multiplicamos por 2^n donde n es la posición del número y luego sumamos lo que nos da 1*2^0=1 0*2^1=0 1*2^2=4 0*2^3=0 0*2^4=0 0*2^5=0 0*2^6=0 1*2^7=128 Sumamos y nos queda 133 y a esto le restamos 127 lo que nos da 6 y ese es el exponente 3. Después tomamos la mantisa desde el inicio hasta el último 1, esto nos daría el siguiente número 001110101, agregamos un 1 al principio y una coma, quedando de esta forma: 1,001110101 como sabemos que el exponente es 6 movemos la 6 espacios a la derecha: 1001110,101 y este número binario es el que vamos a pasar a decimal a. Empezamos con la parte entera haciendo un procedimiento igual al que hicimos con el exponente pero sin restarle 127 al número final, entonces nos quedaría asi: 0*2^0=0 1*2^1=2 1*2^2=4 1*2^3=8 0*2^4=0 0*2^5=0 1*2^6=64 Sumado nos queda 78 b. Para la parte decimal se hace un proceso similar pero de izquierda a derecha 1*2^-1=0,5 0*2^-2=0 1*2^-3=0,125 Lo que nos daría 0,625 y está seria la parte fraccionaria de nuestro decimal Juntando todas las partes nos quedaría que 1 10000101 00111010100000000000000 en decimal sería: -78,625
CITAS Y REFERENCIAS 1. Extraido de: https://es.wikipedia.org/wiki/sistema_de_numeración_decimal 2. Extraido de: https://es.wikipedia.org/wiki/ieee_coma_6lotante