HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

 tutorial: estándar IEEE-754, para representación de variables en formato de punto flotante, en 32 bits.

 

 

 

 

 

Cuando se utilizan lenguajes de alto nivel en sistemas de microcontrol, como BASIC ó C, existe la posibilidad de definir las variables empleadas en los programas como: enteras positivas, enteras con signo, ó de punto flotante. Los valores de las variables enteras son almacenados en memoria con los formatos explicados en el tutorial correspondiente.

La representación de punto flotante permite almacenar número reales (es decir, valores que pueden ser positivos ó negativos y manejar punto decimal), que pueden tomar cualquier valor, siempre en un formato fijo de 24 ó 32 bits de memoria, dependiendo del lenguaje utilizado.

Los números representados en fomato de punto flotante son generados a partir de una mantisa y un exponente y pueden tomar valores muy grandes o muy pequeños. El exponente permite mover el punto del valor binario expresado en la mantisa, hasta +127 posiciones hacia la derecha ó -127 hacia la izquierda.

El estándar de punto flotante más utilizado en aplicaciones con microcontroladores, es IEEE-754, de 32 bits. Este formato es utilizado por el compilador C18 y se describe enseguida.

En otro tutorial, se describió el formato utilizado por el compilador HiTech, que contiene solamente 3 bytes ó 24 bits.

ESTÁNDAR IEEE-754, PARA LA REPRESENTACIÓN DE NÚMEROS REALES EN FORMATO DE PUNTO FLOTANTE:

Al definir una variable del tipo "float", en memoria, el valor se almacena en 4 bytes, ó 32 bits, distribuídos de la siguiente manera: un bit del signo, un exponente de 8 bits y una mantisa de 23 bits.

Para realizar la conversión a su valor decimal, se añade a la mantisa un "1" implícito al valor almacenado en memoria, formando finalmente una mantisa de 24 bits.

BYTE 1 BYTE 2 BYTE 3 BYTE 4

SIGNO: es el bit 7 del BYTE 1. Si el valor es de 0, el número es positivo, si es 1, negativo.

EXPONENTE: es un valor de 8 bits, con un offset de 7FH. Para encontrar el valor real del exponente, se le debe restar -7FH al valor almacenado en memoria. Los 8 bits están formados por los 7 bits menos significativos del BYTE 1 y el bit más significativo del BYTE 2. El exponente real expresa el número de posiciones hacia la derecha (cuando el valor es positivo) o hacia la izquierda (cuando el valor es negativo) que debe de moverse el punto binario en la mantisa.

MANTISA: está formada por 23 bits. Estos bits lo forman los 7 bits menos significativos del BYTE 2 y los 8 bits de los BYTES 3 y 4. Al realizar la conversión a su valor real, se le debe añadir un "1" implícito, como se indica enseguida.

El "1" implícito: al realizar la conversión a decimal del valor almacenado en memoria, a la mantisa se le debe añadir siempre un "1" a la izquierda del valor binario de 23 bits, que finalmente forma la representación de 24 bits.

La posición del punto: la posición del punto, que separa a la parte entera de la parte fraccionaria, siempre estará inicialmente después (a la derecha) del "1" implícito de la mantisa. Esta posición inicial del punto habrá que moverla hacia la derecha o hacia la izquierda, según el valor del exponente real. Favor de ver los ejemplos mostrados abajo.

 

EJEMPLOS:

NUMERO DECIMAL EN FORMATO DE PUNTO FLOTANTE BIT DEL SIGNO EXPONENTE REAL MANTISA INCLUYENDO EL "1" IMPLICITO (EN BINARIO)
+1.0 3F 80 00 00 0 7F - 7F = 0 1.0 ...
+2.0 40 00 00 00 0 80 - 7F = +1 10.0 ...
+3.0 40 40 00 00 0 80 - 7F = +1 11.0 ...
-3.0 C0 40 00 00 1 80 - 7F = +1 11.0 ...
+0.5 3F 00 00 00 0 7E - 7F = -1 .10 ...
+10.0 41 20 00 00 0 82- 7F = +3 1010.0 ...
-100.0 C2 C8 00 00 1 85 - 7F = +6 1100100.0 ...
+3.1416 40 49 0F F9 0 80 - 7F = +1 11.00100100010 ...
-1.25 BF A0 00 00 1 7F - 7F = 0 1.010 ...
-248.75  C3 78 C0 00 1 86 - 7F = +7 11111000.11000011

DEFINICIÓN DE UNA VARIABLE DE PUNTO FLOTANTE EN C:

PI.jpg (12866 bytes)