Ett flyttalstal (eller flyttalsnummer ) är en exponentiell form av att representera reella (reella) tal , där talet lagras som en mantiss och en exponent ( exponent ). I detta fall har flyttalstalet en fast relativ precision och en variabel absolut. Den vanligaste representationen anges i IEEE 754- standarden . Implementeringen av matematiska operationer med flyttal i datorsystem kan vara både hårdvara och mjukvara.
Eftersom i vissa, övervägande engelsktalande och engelsktalande länder, när man skriver siffror, separeras heltalsdelen från bråktalet, förekommer termen "flytande komma" i dessa länders terminologi . Eftersom i Ryssland är heltalsdelen av ett tal traditionellt separerad från bråkdelen med ett kommatecken, används termen "flytande komma" historiskt för att hänvisa till samma begrepp, men för närvarande kan båda alternativen hittas på ryska språket litteratur och teknisk dokumentation.
Namnet "flytande komma" kommer från det faktum att ett kommatecken i positionsrepresentationen av ett tal (decimalkomma, eller, för datorer, ett binärt komma - nedan helt enkelt ett komma) kan placeras var som helst i förhållande till siffrorna i strängen. Denna kommaposition anges separat i den interna representationen. Således kan representationen av ett tal i flyttalsform ses som en datorimplementering av exponentiell notation för tal.
Fördelen med att använda flyttalsrepresentation av tal framför fixpunktsrepresentation (och heltalsrepresentation ) är att ett mycket större intervall av värden kan användas samtidigt som samma relativa precision bibehålls . Till exempel, i form av fixpunkter, kan ett tal som har 6 heltalssiffror och 2 decimaler representeras som 123 456,78 . I sin tur, i flyttalsformatet med samma 8 siffror , kan du skriva siffrorna 1.2345678 ; 1 234 567,8 ; 0,000012345678 ; 12 345 678 000 000 000 och så vidare, men för detta är det nödvändigt att ha ett ytterligare tvåsiffrigt fält för att registrera exponenterna för basen 10 från 0 till 16, medan det totala antalet siffror kommer att vara 8 + 2 = 10 .
Hastigheten med vilken en dator utför operationer med siffror representerade i flyttalsform mäts i FLOPS (från engelska flyttalsoperationer per sekund - "[antal] flyttalsoperationer per sekund") och är en av de viktigaste enheter för att mäta hastigheten hos datorsystem.
Ett flyttal består av följande delar:
Den normala formen av ett flyttal är en sådan form där mantissan (utan att ta hänsyn till tecknet) är på halvintervallet , det vill säga .
Denna form av notation har en nackdel: vissa tal skrivs tvetydigt (till exempel kan 0,0001 skrivas som 0,000001⋅10 2 , 0,00001⋅10 1 , 0,0001⋅10 0 , 0,001 ⋅ 10 och ⋅ 10 och ⋅ 10 och ⋅ 1 på), därför är en annan form av notation också vanlig (särskilt inom datavetenskap) - normaliserad , där mantissan för ett decimaltal tar värden från 1 (inklusive) till 10 (exklusivt), det vill säga (på liknande sätt mantissan för ett binärt tal tar värden från 1 till 2). I det här formuläret skrivs vilket nummer som helst (utom ) på ett unikt sätt. Nackdelen är att det är omöjligt att representera 0 i denna form, så representationen av tal i datavetenskap ger ett speciellt tecken ( bit ) för talet 0.
Den högsta biten (heltalsdelen av talet) av mantissan för ett binärt tal (förutom 0) i normaliserad form är lika med 1 (den så kallade implicita enheten ), därför när man skriver mantissan för ett tal i en dator kan den höga biten utelämnas, som används i IEEE 754- standarden . I positionstalssystem med en bas som är större än 2 (i ternär , kvartär, etc.) finns inte denna egenskap.
Med begränsade designalternativ (till exempel visa ett nummer på en indikator med sju segment ) , och även, om nödvändigt, ge snabb och bekväm inmatning av siffror, istället för att skriva formen m b e ( m är mantissan; b är bas , oftast 10; e är exponenten), skriv bara mantissan och exponenten, separera dem med bokstaven "E" (från den engelska exponenten ). I det här fallet antas basen implicit vara lika med 10. Till exempel skrivs talet 1,528535047⋅10 −25 i detta fall som 1,528535047E-25.
Det finns flera sätt på vilka siffersträngar kan representera siffror:
Genom att skriva ett tal i flyttalsform kan du utföra beräkningar över ett brett spektrum av värden, kombinera ett fast antal siffror och precision. Till exempel, i decimalrepresentation av flyttal (3 siffror), multiplikationsoperationen, som vi skulle skriva som
0,12 × 0,12 = 0,0144i normal form representeras som
(1,20⋅10 −1 ) × (1,20⋅10 −1 ) = (1,44⋅10 −2 ).I fixpunktsformat skulle vi få forcerad avrundning
0,120 × 0,120 = 0,014.Vi har tappat siffran längst till höger i numret, eftersom detta format inte tillåter kommatecken att "sväva" längs numret.
Omfånget av tal som kan skrivas på detta sätt beror på antalet bitar som tilldelats för att representera mantissan och exponenten. På en typisk 32-bitars dator som använder dubbel precision (64 bitar), är mantissan 1 bit tecken + 52 bitar, exponenten är 1 bit tecken + 10 bitar. Således får vi ett noggrannhetsområde från cirka 4,94⋅10 −324 till 1,79⋅10 308 (från 2 −52 × 2 −1022 till ~1 × 2 1024 ). (eller från 3,7⋅10 -1126 till 9,99⋅10 1091 ). I IEEE 754- standarden är flera värden av denna typ reserverade för att tillåta speciella värden att representeras. Dessa inkluderar NaN (Not a Number) och +/-INF (Infinity ) värden som resulterar från division med noll operationer eller när det numeriska området överskrids. Här ingår också denormaliserade tal , som har en mantiss mindre än en. Specialiserade enheter (som GPU:er ) saknar ofta stöd för specialnummer. Det finns programvarupaket där mängden minne som allokeras för mantissan och exponenten ställs in programmatiskt och begränsas endast av mängden tillgängligt datorminne (se Godtycklig precisionsaritmetik ).
Noggrannhet | Enda | Dubbel | Förlängd |
---|---|---|---|
Storlek (byte) | fyra | åtta | tio |
Antal decimaler | ~7.2 | ~15.9 | ~19.2 |
Minsta värde (>0), denorm | 1,4⋅10 −45 | 4,9⋅10 −324 | 3,7⋅10 −1126 |
Lägsta värde (>0), normalt | 1,2⋅10 −38 | 2,3⋅10 −308 | 1⋅10 −1091 |
Högsta värde | 3,4×10 +38 | 1,7×10 +308 | 9,9×10 +1091 |
fält | SEF | SEF | SEIF |
Marginalstorlekar | 1-8-23 | 1-11-52 | 1-15-1-63 |
Till skillnad från tal med fasta punkter är rutnätet av tal som aritmetik med flyttal kan visa inte enhetligt: det är tätare för tal med små exponenter och glesare för tal med stora exponenter. Men det relativa felet att skriva siffror är detsamma för små och stora. Maskinepsilon är det minsta positiva talet ε så att (tecknet anger maskinaddition). Grovt sett korrelerade siffrorna a och b , så att , maskinen inte särskiljer.
För enkel precision , det vill säga ungefär 7 signifikanta siffror . För dubbel precision: , 15 signifikanta siffror [1] .
Datatyper | |
---|---|
Otolkbart | |
Numerisk | |
Text | |
Referens | |
Sammansatt | |
abstrakt | |
Övrig | |
Relaterade ämnen |