IEEE 754-1985

De la Viquipèdia, l'enciclopèdia lliure

IEEE 754-1985 [1] és un estàndard històric de la indústria per representar nombres de coma flotant en ordinadors, adoptat oficialment el 1985 i substituït el 2008 per IEEE 754-2008, i de nou el 2019 per una revisió menor IEEE 754-2019.[2] Durant els seus 23 anys, va ser el format més utilitzat per al càlcul de coma flotant. Es va implementar en programari, en forma de biblioteques de coma flotant, i en maquinari, en les instruccions de moltes CPU i FPU. El primer circuit integrat per implementar l'esborrany del que es convertiria en IEEE 754-1985 va ser l'Intel 8087.[3]

IEEE 754-1985 representa nombres en binari, proporcionant definicions per a quatre nivells de precisió, dels quals els dos més utilitzats són:

Nivell Amplada Gamma a tota precisió Precisió
Precisió única 32 bits ±1,18 ×10−38 a ±3,4 ×1038 Aproximadament 7 dígits decimals
Doble precisió 64 bits ±2,23 ×10−308 a ±1,80 ×10308 Aproximadament 16 dígits decimals

L'estàndard també defineix representacions per a l'infinit positiu i negatiu, un "zero negatiu", cinc excepcions per gestionar resultats no vàlids com la divisió per zero, valors especials anomenats NaNs per representar aquestes excepcions, nombres desnormals per representar nombres més petits que els mostrats anteriorment i quatre modes d'arrodoniments.

Representació dels nombres[modifica]

El nombre 0,15625 representat com un nombre de coma flotant IEEE 754-1985 de precisió única. Vegeu el text per a una explicació.

Nombres de coma flotant en IEEE El format 754 consta de tres camps: un bit de signe, un exponent esbiaixat i una fracció. L'exemple següent il·lustra el significat de cadascun.

El nombre decimal 0,15625 10 representat en binari és 0,00101 ₂ (és a dir, 1/8 + 1/32). (Els índexs indiquen la base numèrica . ) De manera anàloga a la notació científica, on els nombres s'escriuen per tenir un sol dígit diferent de zero a l'esquerra del punt decimal, tornem a escriure aquest nombre perquè tingui un únic bit a l'esquerra del "punt binari". Simplement multipliquem per la potència adequada de 2 per compensar el desplaçament dels bits deixats per tres posicions: [4]

Ara podem llegir la fracció i l'exponent: la fracció és .01 i l'exponent és −3.

Els tres camps d'un IEEE 754 de 64 bits floten

Com s'il·lustra a les imatges, els tres camps de l'IEEE 754 representació d'aquest nombre són:

signe = 0, perquè el nombre és positiu. (1 indica negatiu. )
exponent esbiaixat = −3 + el "biaix". En precisió única, el biaix és 127, de manera que en aquest exemple l'exponent esbiaixat és 124; en doble precisió, el biaix és 1023, de manera que l'exponent esbiaixat en aquest exemple és 1020.
fracció = .01000… ₂ .
Precisió relativa de nombres simples (binari32) i de precisió doble (binari64), en comparació amb representacions decimals utilitzant un nombre fix de dígits significatius. La precisió relativa es defineix aquí com ulp( x )/ x, on ulp( x ) és la unitat en l'últim lloc de la representació de x, és a dir, la bretxa entre x i el següent nombre representable.
IEEE 754 afegeix un biaix a l'exponent perquè els nombres es puguin comparar còmodament en molts casos amb el mateix maquinari que compara nombres enters de complement de 2 amb signe. Utilitzant un exponent esbiaixat, el menor de dos nombres positius de coma flotant sortirà "menys que" el major seguint el mateix ordre que per als enters de signe i magnitud. Si dos nombres de coma flotant tenen signes diferents, la comparació de signe i magnitud també funciona amb exponents esbiaixats. Tanmateix, si els dos nombres de coma flotant amb exponent esbiaixat són negatius, l'ordenació s'ha d'invertir. Si l'exponent es representés com, per exemple, un nombre de complement de 2, la comparació per veure quin dels dos nombres és més gran no seria tan convenient.

Referències[modifica]

  1. IEEE Standard for Binary Floating-Point Arithmetic (en anglès), 1985. DOI 10.1109/IEEESTD.1985.82928. ISBN 0-7381-1165-1. 
  2. «ANSI/IEEE Std 754-2019» (en anglès). 754r.ucbtest.org. [Consulta: 6 agost 2019].
  3. «IEEE Standards Association» (en anglès). [Consulta: 9 setembre 2023].
  4. «IEEE Standard 754 Floating Point Numbers» (en anglès americà), 12-09-2018. [Consulta: 9 setembre 2023].