Flyttalnummer

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 28 januari 2022; kontroller kräver 10 redigeringar .

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.

"Flytande punkt" och "flytande punkt"

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.

Namnets ursprung

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.

Nummerstruktur

Ett flyttal består av följande delar:

Normala och normaliserade former

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.

Inspelningsmetoder

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.  

Översikt

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,0144

i 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ång av tal som kan representeras i flyttalsformat

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

Machine epsilon

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] .

Se även

Anteckningar

  1. E. Cheney, David Kincaid. Numerisk matematik och beräkning. — Cengage Learning, 2012. — 43– sid. — ISBN 1-133-71235-5 .

Litteratur

Länkar