Miguel de Cervantes y Saavedra - Don Quijote de la Mancha - Ebook:
HTML+ZIP- TXT - TXT+ZIP

Wikipedia for Schools (ES) - Static Wikipedia (ES) 2006
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
IEEE punto flotante - Wikipedia, la enciclopedia libre

IEEE punto flotante

De Wikipedia, la enciclopedia libre

El estándar de la IEEE para aritmética en coma flotante (IEEE 754) es el estándar más ampliamente usado para las computaciones en punto flotante, y es seguida por muchas de las implementaciones de CPU y FPU. El estándar define formatos para la representación de números en punto flotante (incluyendo el cero) y valores desnormalizados, así como valores especiales como infinito y NaNs conjuntamente con un conjunto de operaciones en punto flotante que opera sobre estos valores. También especifica cuatro modos de redondeo y cinco excepciones (incluyendo cuando dichas excepciones ocurren, y que sucede en dichos momentos).

IEEE 754 especifica cuatro formatos para la representación de valores en punto flotante: precisión simple (32-bits), precisión doble (64-bits), precisión simple extendida (≥ 43-bits, no usada normalmente) y precisión doble extendida (≥ 79-bits, usualmente implementada con 80-bits). Solo los valores de 32-bits son requeridos por el estándar, los otros son opcionales. Muchos lenguajes especifican qué formatos y aritmética de la IEEE implementan, a pesar de que a veces son opcionales. Por ejemplo, el lenguaje de programación C, ahora permite pero no requiere la aritmética de la IEEE (el tipo de C float es típicamente usado para la precisión simple de la IEEE y el tipo double usa la precisión doble del la IEEE).

El título completo del estándar es IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985), y también es conocido por IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (originalmente el número de referencia era IEC 559:1989). [1]

Tabla de contenidos

[editar] Anatomía de un número en punto flotante

A continuación se realiza una descripción del formato estándar de la IEEE para números de punto flotante.

[editar] Convenciones de Bit usadas en este artículo

Los Bits dentro de una palabra de tamaño W están indexados por enteros en el rango 0 a W−1 inclusive. El bit cuyo índice es 0 se sitúa a la derecha. El menor bit indexado es normalmente el menos significativo.

[editar] Precisión simple 32-bits

Un número en punto flotante de precisión simple se almacena en una palabra de 32 bits.

  1     8               23              tamaño en bits
 +-+--------+-----------------------+
 |S|  Exp   |  Fracción             |
 +-+--------+-----------------------+
 31 30    23 22                    0    índice del bit (0 a la derecha)
    desplazado +127

donde S es el bit de signo y Exp es el campo exponente. (Para el signo: 0=Positivo ; 1= Negativo).

El exponente es desplazado en el sentido de la IEEE para una palabra. El valor almacenado es el offset (desplazado 127 en este caso) del valor actual. El desplazamiento ocurre porque los exponentes pueden ser valores con signo, para permitir la representación de valores pequeños y grandes, pero la representación en complemento a dos haría esta tarea más difícil. Para resolver esto, el exponente es desplazado antes de ser almacenado, ajustando su valor para ponerlo dentro de un rango sin signo adaptable a una comparación. Así, para un número en precisión simple, un exponente en el rango −126 a +127 es desplazado mediante la suma de 127 para obtener un valor en el rango 1 a 254 (0 y 255 tienen valores especiales descritos más adelante). Cuando se interpreta el valor en punto flotante, el número es desplazado de nuevo para obtener el exponente real.

El conjunto de valores posibles pueden ser divididos en los siguientes:

  • ceros
  • números normalizados
  • números desnormalizados
  • infinitos
  • NaN (Not a Number, no es un número, como por ejemplo, la raíz cuadrada de un número negativo)

Las clases se distinguen principalmente por el valor del campo Exp, siendo modificada ésta por el campo fracción. Considera Exp y Fracción como campos de números binarios sin signo (Exp se encuentra en el rango 0–255):

Clase                    Exp       Fracción
Ceros                     0           0
Números desnormalizados   0       distinto de 0
Números normalizados    1-254     cualquiera
Infinitos                255          0
NaN (Not a Number)       255      distinto de 0

Para números normalizados, los más comunes, Exp es el exponente desplazado y Fracción es la parte fraccional del el significando. El número tiene valor v:

v = s × 2e × m

Donde

s = +1 (números positivos) cuando S es 0

s = −1 (números negativos) cuando S es 1

e = Exp − 127 (en otras palabras, el exponente se almacena con 127 sumado a él, también llamado "biased with 127" en inglés)


m = 1.Fracción en binario (esto es, el significando es el número binario 1 seguido por el punto decimal seguido por los bits de Fracción). Por lo tanto, 1 ≤ m < 2.

Nota:

  1. Los números desnormalizados son iguales excepto que e = −126 y m es 0.Fracción. (e NO es -127 : El significando ha de ser desplazado a la derecha por un bit más, de forma que incluya el bit principal, que no siempre es 1 en este caso. Esto se balancea incrementando el exponente a -126 para el calculo.)

Nota:

  1. −126 es el menor exponente para un número desnormalizado
  2. Hay dos ceros. +0 (S es 0) y −0 (S es 1)
  3. Hay dos infinitos +∞ (S es 0) y −∞ (S es 1)
  4. Los NaN s pueden tener un signo y un significando, pero estos no tienen otro significado que el que puedan aportar en pruebas de diagnostico; el primer bit del significando es a menudo utilizado para distinguir NaN s señalizados de NaN s silenciosos
  5. los NaN s y los infinitos tienen todos los bits a 1 en el campo Exp.

[editar] Un Ejemplo

Codifiquemos el número decimal -118.625 usando el sistema de la IEEE 754.

Necesitamos obtener el signo, el exponente y la fracción.

Dado que es un número negativo, el signo es "1". Busquemos los demás valores.

Primero, escribimos el número (sin signo) usando notación binaria. Mira el sistema de numeración binario para ver como hacer esto. El resultado es 1110110.101.

Ahora, movamos el punto decimal a la izquierda, dejando solo un 1 a su izquierda.

1110110.101=1.110110101·26 Esto es un número en coma flotante normalizado.

La fracción es la parte a la derecha del punto decimal, rellenada con ceros a la derecha hasta que obtengamos todos los 23 bits. Es decir 11011010100000000000000.

El exponente es 6, pero necesitamos convertirlo a binario y desplazarlo (de forma que el exponente más negativo es 0, y todos los exponentes son solamente números binarios no negativos). Para el formato IEEE 754 de 32 bits, el desplazamiento es 127, así es que 6 + 127 = 133. En binario, esto se escribe como 10000101.

Poniendo todo junto:

  1     8               23              tamaño en bits
 +-+--------+-----------------------+
 |S|  Exp   |  Fracción             |
 |1|10000101|11011010100000000000000|
 +-+--------+-----------------------+
 31 30    23 22                    0    índice del bit (0 a la derecha)
    desplazado +127

[editar] Precisión doble 64-bits

La precisión doble es esencialmente lo mismo, exceptuando que los campos son de mayor tamaño (más bits por campo):

  1     11                                52
 +-+-----------+----------------------------------------------------+
 |S|  Exp      |  Fracción                                          |
 +-+-----------+----------------------------------------------------+
 63 62       52 51                                                 0
    desplazado +1023

Los NaN s y los infinitos son representados con todos los bits de los Exp siendo 1 (2047 en decimal).

Para los números normalizados, el exponente es desplazado +1023 (así nuestro e anterior es Exp - 1023) Para números normalizados es exponente es -1022 (el mínimo exponente para un número normalizado— no es 1024 porque los números normalizados tienen un bit a 1 delante del punto binario y los números desnormalizados no). Como antes, ambos infinitos y los ceros contienen signo.

[editar] Comparación de números en punto flotante

La comparación de números en punto flotante se realiza generalmente usando instrucciones de punto flotante. Sin embargo esta representación (IEEE 754) hace la comparación de determinados subconjuntos posible byte-por-byte, si comparten el mismo orden de bytes y el mismo signo, y además los NaN s son excluidos.

Por ejemplo, para dos números positivos a y b, a < b es cierto siempre que los enteros binarios sin signo con los mismos patrones de bits y el mismo orden de bytes que a y b son también ordenados de forma a < b. En otras palabras, dos números positivos (que se sabe que no son NaN s) puede ser comparados con una comparación entre enteros binarios sin signo entre los mismos grupos de bits, teniendo como base que los números tienen el mismo orden de bytes (esta ordenación, por tanto, no puede ser utilizada a través de una union en el lenguaje de programación C. Este es un ejemplo de ordenación lexicográfica.

[editar] Redondeo de números en punto flotante

El estándar de la IEEE tiene cuatro formas diferentes de redondeo:

  • Unbiased que redondea al número más cercano, si el número cae en medio, este es redondeado al valor más cercano con un valor par (cero) en su menos significativo. Este modo es el requerido como por defecto.
  • Hacia el cero
  • Hacia el infinito positivo
  • Hacia el infinito negativo

[editar] Revisión del estándar

Nótese que el estándar IEEE 754 esta actualmente en revisión (2004). Ver IEEE 754r

[editar] Véase también

  • -0

[editar] Enlaces externos

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com