IEEE 754-2008

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 24 augusti 2019; kontroller kräver 22 redigeringar .

IEEE 754 ( IEC 60559) är en allmänt använd IEEE -standard som beskriver ett format för att representera flyttal . Det används i mjukvara ( kompilatorer av olika programmeringsspråk ) och hårdvara ( CPU och FPU ) implementeringar av aritmetiska operationer (matematiska operationer).

Standarden beskriver:

2008 års standard ersätter IEEE 754-1985 . Den nya standarden inkluderar binära format från den tidigare standarden och tre nya format. Enligt gällande standard ska en implementering stödja minst ett av grundformaten, samt aritmetiskt format och utbytesformat.

Lista över standarder:

Utveckling av standarden

Den nuvarande versionen av IEEE 754-2008 publicerades 2008. Den kompletterar och ersätter den tidigare versionen av IEEE 754-1985 , skriven av Dan Zuras och redigerad av Mike Coulishaw..

Den internationella standarden ISO/IEC/IEEE 60559:2011 (med identisk IEEE 754-2008) har godkänts och publicerats för JTC1 /SC 25 under ISO/IEEE PSDO-avtalet.

De binära formaten i den ursprungliga standarden ingår i den nya standarden tillsammans med tre nya basformat (ett binärt och två decimaler). För att överensstämma med den nuvarande standarden måste en implementering implementera minst ett av de grundläggande formaten.

Från och med september 2015 revideras standarden för att inkludera förtydliganden.

Format

IEEE 754-formatet är "en uppsättning representationer av numeriska värden och tecken". Formatet kan också innehålla en kodningsmetod.

Formatet inkluderar:

De möjliga slutvärdena som kan representeras i formatet bestäms av basen , antalet tecken i mantissan (med precision ) och det maximala värdet :

Därför (för det föregående exemplet) är det minsta positiva talet som inte är noll som kan representeras , och det största är ( ), liksom hela intervallet av tal från till . Siffrorna och ( och ) är de minsta (i absoluta värden) normala talen; icke-nolltal mellan dessa minsta tal kallas subnormala .

Representation och kodning i minnet

Vissa nummer kan ha flera representationer i det format som de just beskrevs i. Till exempel, om och , då kan numret representeras som: , eller .

För decimalformat är alla representationer giltiga, och samlingen av dessa representationer kallas kohorter . När ett resultat kan ha flera representationer avgör standarden vilken som väljs av en medlem i kohorten.

För binära format görs representationen unik genom att välja den minsta representerbara exponenten. För tal med en exponent i normalområdet (inte alla eller alla nollor) kommer den inledande biten i mantissan alltid att vara 1. Därför kan den inledande 1-biten antydas snarare än lagras explicit i minnet. Denna regel kallas den ledande bitkonventionen eller dolda bitkonventionen. Regeln tillåter dig att spara 1 bit minne för att få ytterligare en bit av precision. Den inledande biten i konventionen används inte för subnormala tal; deras hastighet ligger utanför det normala intervallet för värden.

Grundläggande och utbytbara format

Standarden definierar fem grundläggande format, som är namngivna efter deras talbas och antalet bitar som används i deras kodning. Det finns tre grundläggande binära flyttalsformat (kodade med 32, 64 eller 128 bitar) och två decimala flyttalsformat (kodade med 64 eller 128 bitar). Formaten binary32 och binary64 är IEEE 754-1985 enkla och binära format. En överensstämmande implementering måste fullt ut implementera minst ett av de grundläggande formaten.

Standarden definierar också utbytesformat som generaliserar dessa grundläggande format. Binära sådana kräver en överenskommelse med de ledande bitarna. Tabellen listar de minsta utbytesformaten (inklusive grundläggande).

namn Hela titeln Bas Antal binära siffror i mantissan Antal decimaler Exponent (bit) Decimal
Emax
Exponentiell offset [1] Emin Emax Anteckningar
binär16 halv precision 2 elva 3,31 5 4,51 2 4 −1 = 15 −14 +15 Inte mainstream
binär32 enda precision 2 24 7.22 åtta 38,23 2 7 −1 = 127 −126 +127
binär64 Dubbel precision 2 53 15,95 elva 307,95 2 10 −1 = 1023 −1022 +1023
binär128 Fyrdubbel noggrannhet 2 113 34.02 femton 4931,77 2 14 −1 = 16383 −16382 +16383
binär256 8x noggrannhet 2 237 71,34 19 78913.2 2 18 −1 = 262143 −262142 +262143 Inte mainstream
decimal32 tio 7 7 7,58 96 101 −95 +96 Inte mainstream
decimal 64 tio 16 16 9,58 384 398 −383 +384
decimal128 tio 34 34 13.58 6144 6176 −6143 +6144

Observera att i tabellen ovan är minimivärdena för vanliga siffror. Den speciella representationen av subnormala tal gör det möjligt att representera ännu mindre tal (med viss förlust av precision). Till exempel är det minsta dubbla precisionstalet större än noll som kan representeras i denna form 2 − 1074 (eftersom 1074 = 1022 + 53 − 1).

Decimalvärdet är värdet  × log 10 bas , vilket ger den ungefärliga precisionen i decimal.

Decimal E max är emax  × log 10 bas, detta ger maximal effekt i decimal.

Som nämnts tidigare är formaten binary32 och binary64 identiska med IEEE 754-1985-formaten och är de två vanligaste formaten som används idag. Figuren till höger visar den absoluta precisionen för formaten binary32 och binary64, från 10 −12 till 10 12 . En sådan indikator kan användas för att välja lämpligt format, givet det förväntade värdet av numret och den nödvändiga precisionen.

Utökade och utbyggbara precisionsformat

Standarden definierar även utökade och utdragbara precisionsformat som rekommenderas för större precision än basformaten. Det utökade precisionsformatet utökar grundformatet med högre precision och ett bredare exponentomfång. Det avancerade precisionsformatet tillåter användaren att specificera en rad precision och exponent. En implementering kan använda vilken intern representation den väljer för sådana format. Allt som behöver specificeras är parametrarna b, p och emax. Dessa parametrar beskriver unikt uppsättningen av finita tal (kombinationer av tecken och exponent för en given bas) som den kan representera.

Standarden kräver ingen implementering för att stödja utökade eller utökningsbara exakta format.

Standarden rekommenderar att språk tillhandahåller en metod för att specificera värdena för p och emax för varje stödd bas b.

Standarden rekommenderar att språk och implementeringar stöder ett utökat format som har högre precision än det största basformatet som stöds för varje bas b.

För ett utökat format med precision mellan två basformat måste exponentomfånget vara lika stort som det för nästa bredare basformat. Så till exempel måste ett 64-bitars utökat precision binärt tal ha ett emax- värde på minst 16383.

Exchange format

Utbytesformaten är utformade för att utbyta flyttalsdata med hjälp av en bitsträng med fast längd.

För utbyte av binära flyttal, definieras utbytesformat med längden 16 bitar, 32 bitar, 64 bitar och valfri multipel av 32 bitar ≥128. 16-bitarsformatet är avsett för utbyte eller lagring av små nummer (till exempel för grafik eller neurala nätverksberäkningar).

Kodningsschemat för dessa binära utbytesformat är detsamma som för IEEE 754-1985: en teckenbit följt av index som beskriver exponentoffset och p-1 bitar som beskriver värdet. Exponentfältets bredd för k-bitsformatet beräknas som w  = round(4 log 2 ( k ))−13. De befintliga 64- och 128-bitarsformaten följer denna regel, men 16- och 32-bitarsformaten har fler effektbitar (5 respektive 8 bitar) än vad denna formel ger (3 respektive 7 bitar).

Precis som med IEEE 754-1985 finns det viss flexibilitet i NaN-kodning.

För utbyte av decimaltal med flyttal definieras utbytesformat för valfri multipel av 32 bitar.

Avrundningsregler

Standarden definierar fem avrundningsregler. De två första reglerna avrundar till närmaste värde, de andra kallas riktningsrundor.

Avrundning till närmaste

Riktningsavrundning

Exempel på avrundning till heltal
Läge / Exempel +11,5 +12,5 −11.5 −12,5
till närmaste (bindande till jämnt) +12,0 +12,0 −12,0 −12,0
till närmaste (snäpp till oändlighet) +12,0 +13,0 −12,0 −13,0
till 0 +11,0 +12,0 −11,0 −12,0
till + ∞ +12,0 +13,0 −11,0 −12,0
till - ∞ +11,0 +12,0 −12,0 −13,0

Nödvändiga operationer

Nödvändiga operationer för ett aritmetiskt format som stöds (inklusive basformat) inkluderar:

Allmänt predikat

Standarden tillhandahåller ett totalOrder-predikat som definierar den totala ordningen för alla flyttal för varje format. Predikatet överensstämmer med de vanliga jämförelseoperationerna. Normala jämförelseoperationer behandlar emellertid NaNs som oordnade och jämför -0 och +0 som lika. TotalOrder-predikatet kommer att ordna dessa fall och även skilja mellan olika representationer av NaN för samma flyttal som kodats på olika sätt.

Se även

Anteckningar

  1. Cowlishaw, Mike Decimala aritmetiska kodningar . IBM. Hämtad 6 augusti 2015. Arkiverad från originalet 8 februari 2016.

Länkar