IEEE 754-2008

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. august 2019; checks kræver 22 redigeringer .

IEEE 754 ( IEC 60559) er en meget brugt IEEE -standard , der beskriver et format til repræsentation af flydende kommatal . Det bruges i software ( kompilere af forskellige programmeringssprog ) og hardware ( CPU og FPU ) implementeringer af aritmetiske operationer (matematiske operationer).

Standarden beskriver:

2008-standarden erstatter IEEE 754-1985 . Den nye standard omfatter binære formater fra den tidligere standard og tre nye formater. Ifølge den gældende standard skal en implementering understøtte mindst et af grundformaterne samt det aritmetiske format og udvekslingsformatet.

Liste over standarder:

Udvikling af standarden

Den nuværende version af IEEE 754-2008 blev offentliggjort i 2008. Det supplerer og erstatter den tidligere version af IEEE 754-1985 , skrevet af Dan Zuras og redigeret af Mike Coulishaw..

Den internationale standard ISO/IEC/IEEE 60559:2011 (med identisk IEEE 754-2008) er blevet godkendt og offentliggjort for JTC1 /SC 25 under ISO/IEEE PSDO-aftalen.

De binære formater i den oprindelige standard er inkluderet i den nye standard sammen med tre nye basisformater (et binært og to decimaler). For at overholde den nuværende standard skal en implementering implementere mindst et af de grundlæggende formater.

Fra september 2015 er standarden ved at blive revideret til at omfatte præciseringer.

Formater

IEEE 754-formatet er "et sæt af repræsentationer af numeriske værdier og tegn". Formatet kan også omfatte en kodningsmetode.

Formatet omfatter:

De mulige endelige værdier, der kan repræsenteres i formatet, bestemmes af basen , antallet af tegn i mantissen (med præcision ) og den maksimale værdi :

Derfor (for det foregående eksempel) er det mindste ikke-nul positive tal, der kan repræsenteres , og det største er ( ), såvel som hele rækken af ​​tal fra til . Tallene og ( og ) er de mindste (i absolut værdi) normale tal; ikke-nul tal mellem disse mindste tal kaldes subnormale .

Repræsentation og kodning i hukommelsen

Nogle tal kan have flere repræsentationer i det format, som de lige blev beskrevet i. For eksempel, hvis og , så kan tallet repræsenteres som: , eller .

For decimalformater er enhver repræsentation gyldig, og samlingen af ​​disse repræsentationer kaldes kohorter . Når et resultat kan have flere repræsentationer, bestemmer standarden, hvilken der vælges af et medlem af kohorten.

For binære formater gøres repræsentationen unik ved at vælge den mindste repræsentative eksponent. For tal med en eksponent i normalområdet (ikke dem alle eller alle nuller), vil den indledende bit af mantissen altid være 1. Derfor kan den indledende 1 bit være underforstået i stedet for at lagres eksplicit i hukommelsen. Denne regel kaldes den førende bit-konvention eller skjult bit-konvention. Reglen giver dig mulighed for at gemme 1 bit hukommelse for at få en smule præcision mere. Den førende bit i konventionen bruges ikke til subnormale tal; deres hastighed er uden for det normale værdiområde.

Grundlæggende og udskiftelige formater

Standarden definerer fem grundlæggende formater, som er navngivet efter deres talbase og antallet af bit, der bruges i deres kodning. Der er tre grundlæggende binære flydende decimalformater (kodet med 32, 64 eller 128 bit) og to decimale flydende decimalformater (kodet med 64 eller 128 bit). Formaterne binary32 og binary64 er IEEE 754-1985 enkelt- og binære formater. En overensstemmende implementering skal fuldt ud implementere mindst et af de grundlæggende formater.

Standarden definerer også udvekslingsformater, der generaliserer disse grundlæggende formater. Binære dem kræver en aftale med de førende bits. Tabellen viser de mindste udvekslingsformater (inklusive grundlæggende).

Navn Fuld titel Grundlag Antal binære cifre i mantissen Antal decimaler Eksponent (bit) Decimal
Emax
Eksponentiel offset [1] Emin Emax Noter
binær16 halv præcision 2 elleve 3,31 5 4,51 2 4 −1 = 15 −14 +15 Ikke mainstream
binær32 enkelt præcision 2 24 7.22 otte 38,23 2 7 −1 = 127 −126 +127
binær64 dobbelt præcision 2 53 15,95 elleve 307,95 2 10 −1 = 1023 −1022 +1023
binær128 Firedobbelt nøjagtighed 2 113 34.02 femten 4931,77 2 14 −1 = 16383 −16382 +16383
binær256 8x nøjagtighed 2 237 71,34 19 78913.2 2 18 −1 = 262143 −262142 +262143 Ikke mainstream
decimal 32 ti 7 7 7,58 96 101 −95 +96 Ikke mainstream
decimal 64 ti 16 16 9,58 384 398 -383 +384
decimal 128 ti 34 34 13,58 6144 6176 −6143 +6144

Bemærk venligst, at i tabellen ovenfor er minimumsværdierne for almindelige tal. Den særlige repræsentation af subnormale tal gør det muligt at repræsentere endnu mindre tal (med et vist tab af præcision). For eksempel er det mindste dobbelte præcisionstal større end nul, der kan repræsenteres i denne form, 2 − 1074 (fordi 1074 = 1022 + 53 − 1).

Decimalværdien er værdien  × log 10 base , som giver den omtrentlige præcision i decimal.

Decimal E max er emax  × log 10 base, dette giver den maksimale effekt i decimal.

Som tidligere nævnt er binary32 og binary64 formaterne identiske med IEEE 754-1985 formaterne og er de to mest almindelige formater i brug i dag. Figuren til højre viser den absolutte præcision for formaterne binary32 og binary64, der spænder fra 10 −12 til 10 12 . En sådan indikator kan bruges til at vælge det passende format, givet den forventede værdi af tallet og den nødvendige præcision.

Udvidede og udvidelige præcisionsformater

Standarden definerer også udvidede og udvidelige præcisionsformater, der anbefales for større præcision end basisformaterne. Det udvidede præcisionsformat udvider basisformatet ved at bruge højere præcision og et bredere eksponentområde. Det avancerede præcisionsformat giver brugeren mulighed for at specificere en række præcision og eksponenter. En implementering kan bruge enhver intern repræsentation, den vælger til sådanne formater. Det eneste, der skal specificeres, er parametrene b, p og emax. Disse parametre beskriver entydigt det sæt af endelige tal (kombinationer af fortegn og eksponent for en given base), som det kan repræsentere.

Standarden kræver ikke en implementering for at understøtte udvidede eller udvidelige præcise formater.

Standarden anbefaler, at sprog giver en metode til at specificere værdierne af p og emax for hver understøttet base b.

Standarden anbefaler, at sprog og implementeringer understøtter et udvidet format, der har højere præcision end det største basisformat, der understøttes for hver base b.

For et udvidet format med præcision mellem to basisformater skal eksponentområdet være lige så stort som det næste bredere basisformat. Så for eksempel skal et 64-bit udvidet præcisions binært tal have en emax -værdi på mindst 16383.

Udvekslingsformater

Udvekslingsformaterne er designet til at udveksle data med flydende komma ved hjælp af en bitstreng med fast længde.

Til udveksling af binære flydende kommatal defineres udvekslingsformater med længden 16 bit, 32 bit, 64 bit og et hvilket som helst multiplum af 32 bit ≥128. 16-bit formatet er beregnet til udveksling eller lagring af små tal (for eksempel til grafik eller neurale netværksberegninger).

Kodningsskemaet for disse binære udvekslingsformater er det samme som for IEEE 754-1985: en fortegnsbit efterfulgt af indekser, der beskriver eksponentforskydningen, og p-1 bits, der beskriver værdien. Eksponentfeltbredden for k-bit formatet beregnes som w  = round(4 log 2 ( k ))−13. De eksisterende 64 og 128 bit formater følger denne regel, men 16 og 32 bit formaterne har flere power bits (henholdsvis 5 og 8 bits), end denne formel giver (henholdsvis 3 og 7 bits).

Som med IEEE 754-1985 er der en vis fleksibilitet i NaN-kodning.

Til udveksling af decimaltal med flydende decimal er udvekslingsformater defineret for et hvilket som helst multiplum af 32 bit.

Afrundingsregler

Standarden definerer fem afrundingsregler. De to første regler runder af til nærmeste værdi, de andre kaldes retningsrunder.

Afrunding til nærmeste

Retningsbestemt afrunding

Eksempel på afrunding til heltal
Mode / Eksempel +11,5 +12,5 −11.5 −12.5
til nærmeste (bindende til lige) +12,0 +12,0 −12,0 −12,0
til nærmeste (snap til uendeligt) +12,0 +13,0 −12,0 −13,0
til 0 +11,0 +12,0 −11,0 −12,0
til + ∞ +12,0 +13,0 −11,0 −12,0
til - ∞ +11,0 +12,0 −12,0 −13,0

Nødvendige handlinger

Nødvendige handlinger for et understøttet aritmetisk format (inklusive basisformater) omfatter:

Generelt prædikat

Standarden giver et totalOrder-prædikat, der definerer den samlede rækkefølge for alle flydende kommatal for hvert format. Prædikatet stemmer overens med de sædvanlige sammenligningsoperationer. Normale sammenligningsoperationer behandler imidlertid NaN'er som uordnede og sammenligner -0 og +0 som ens. TotalOrder-prædikatet vil sortere disse tilfælde og også skelne mellem forskellige repræsentationer af NaN for det samme flydende kommanummer kodet på forskellige måder.

Se også

Noter

  1. Cowlishaw, Mike Decimal Arithmetic Encodings . IBM. Hentet 6. august 2015. Arkiveret fra originalen 8. februar 2016.

Links