Număr în virgulă mobilă

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 28 ianuarie 2022; verificările necesită 10 modificări .

Un număr în virgulă mobilă (sau număr în virgulă mobilă ) este o formă exponențială de reprezentare a numerelor reale (reale) , în care numărul este stocat ca mantisă și exponent ( exponent ). În acest caz, numărul în virgulă mobilă are o precizie relativă fixă ​​și una absolută variabilă. Reprezentarea cea mai frecvent utilizată este menționată în standardul IEEE 754 . Implementarea operațiilor matematice cu numere în virgulă mobilă în sistemele de calcul poate fi atât hardware, cât și software.

„Virgula flotantă” și „virgula mobilă”

Deoarece în unele țări, predominant vorbitoare de limbă engleză și engleză , atunci când se scriu numere, partea întreagă este separată de punctul fracționar, termenul „virgula mobilă” apare în terminologia acestor țări .  Deoarece în Rusia partea întreagă a unui număr este în mod tradițional separată de partea fracționară printr-o virgulă, termenul „virgulă mobilă” este folosit istoric pentru a se referi la același concept, totuși, în prezent, ambele opțiuni pot fi găsite în limba rusă. literatură și documentație tehnică.

Originea numelui

Denumirea „virgulă mobilă” provine de la faptul că o virgulă în reprezentarea pozițională a unui număr (punct zecimal, sau, pentru computere, o virgulă binară - în continuare pur și simplu virgulă) poate fi plasată oriunde în raport cu cifrele din șir. Această poziție a virgulei este specificată separat în reprezentarea internă. Astfel, reprezentarea unui număr în formă de virgulă mobilă poate fi privită ca o implementare computerizată a notației exponențiale pentru numere.

Avantajul utilizării reprezentării în virgulă mobilă a numerelor față de reprezentarea în virgulă fixă ​​(și întreg ) este că poate fi utilizată o gamă mult mai mare de valori, păstrând aceeași precizie relativă . De exemplu, sub formă de punct fix, un număr care are 6 cifre întregi și 2 zecimale poate fi reprezentat ca 123.456,78 . La rândul său, în format virgulă mobilă în aceleași 8 cifre , puteți scrie numerele 1.2345678 ; 1.234.567,8 ; 0,000012345678 ; 12 345 678 000 000 000 și așa mai departe, dar pentru aceasta este necesar să existe un câmp suplimentar de două cifre pentru înregistrarea exponenților bazei 10 de la 0 la 16, în timp ce numărul total de cifre va fi 8 + 2 = 10 .

Viteza cu care un computer efectuează operații cu numere reprezentate sub formă de virgulă mobilă este măsurată în FLOPS (din limba engleză  floating-point operations per second  - „[number] of floating-point operations per second”) și este una dintre principalele unitati de masurare a vitezei sistemelor de calcul .

Structura numerelor

Un număr în virgulă mobilă este format din următoarele părți:

Forme normale și normalizate

Forma normală a unui număr în virgulă mobilă este o astfel de formă în care mantisa (fără a lua în considerare semnul) se află pe jumătate de interval , adică .

Această formă de notație are un dezavantaj: unele numere sunt scrise ambiguu (de exemplu, 0,0001 poate fi scris ca 0,000001⋅10 2 , 0,00001⋅10 1 , 0,0001⋅10 0 , 0,001⋅10 0 , 0,001⋅10 −1⋅10 −1⋅10 . on), prin urmare, o altă formă de notație este de asemenea comună (în special în informatică) - normalizată , în care mantisa unui număr zecimal ia valori de la 1 (inclusiv) la 10 (exclusiv), adică (în mod similar, mantisa unui număr binar ia valori de la 1 la 2). În această formă, orice număr (cu excepția ) este scris într-un mod unic. Dezavantajul este că este imposibil să se reprezinte 0 în această formă, astfel încât reprezentarea numerelor în informatică oferă un semn special ( bit ) pentru numărul 0.

Cel mai mare bit (partea întreagă a numărului) al mantisei unui număr binar (cu excepția lui 0) într-o formă normalizată este egal cu 1 (așa-numita unitate implicită ), prin urmare, atunci când se scrie mantisa unui număr într-un computer, bitul înalt poate fi omis, care este utilizat în standardul IEEE 754 . În sistemele de numere poziționale cu o bază mai mare de 2 (în ternar , cuaternar etc.), această proprietate nu există.

Metode de înregistrare

Cu opțiuni de design limitate (de exemplu, afișarea unui număr pe un indicator cu șapte segmente ) și, de asemenea, dacă este necesar, oferiți o introducere rapidă și convenabilă a numerelor, în loc să scrieți forma m b e ( m este  mantisa; b  este baza , cel mai adesea 10; e  este exponentul), scrieți doar mantisa și exponentul, separându-le cu litera „E” (din exponentul englez ). În acest caz, se presupune implicit că baza este egală cu 10. De exemplu, numărul 1,528535047⋅10 −25 în acest caz este scris ca 1,528535047E-25.  

Prezentare generală

Există mai multe moduri în care șirurile de cifre pot reprezenta numere:

Scrierea unui număr în formă de virgulă mobilă vă permite să efectuați calcule pe o gamă largă de valori, combinând un număr fix de cifre și precizie. De exemplu, în reprezentarea zecimală a numerelor în virgulă mobilă (3 cifre), operația de înmulțire, pe care am scrie ca

0,12 × 0,12 = 0,0144

în formă normală este reprezentată ca

(1,20⋅10 −1 ) × (1,20⋅10 −1 ) = (1,44⋅10 −2 ).

În format de punct fix, vom obține rotunjirea forțată

0,120 × 0,120 = 0,014.

Am pierdut cea mai dreaptă cifră a numărului, deoarece acest format nu permite virgulei să „plutească” de-a lungul intrării numărului.

Interval de numere reprezentabil în format virgulă mobilă

Gama de numere care pot fi scrise în acest fel depinde de numărul de biți alocați pentru a reprezenta mantisa și exponentul. Pe un computer tipic pe 32 de biți care utilizează precizie dublă (64 de biți), mantisa este semnul de 1 bit + 52 de biți, exponentul este semnul de 1 bit + 10 biți. Astfel, obținem un interval de precizie de la aproximativ 4,94⋅10 −324 la 1,79⋅10 308 (de la 2 −52  × 2 −1022 la ~1 × 2 1024 ). (sau de la 3,7⋅10 -1126 la 9,99⋅10 1091 ). În standardul IEEE 754 , mai multe valori de acest tip sunt rezervate pentru a permite reprezentarea unor valori speciale. Acestea includ valorile NaN (Nu este un număr) și +/-INF (Infinit ) care rezultă din operațiunile de împărțire la zero sau când intervalul numeric este depășit. De asemenea, aici sunt incluse numerele denormalizate , care au o mantisă mai mică de unu. Dispozitivele specializate (cum ar fi GPU-urile ) nu suportă adesea numerele speciale. Există pachete software în care cantitatea de memorie alocată pentru mantise și exponent este setată programatic și este limitată doar de cantitatea de memorie disponibilă pentru computer (vezi Aritmetica de precizie arbitrară ).

Precizie Singur Dubla Extins
Dimensiune (octeți) patru opt zece
Numărul de zecimale ~7.2 ~15.9 ~19.2
Valoarea minimă (>0), denorm 1,4⋅10 −45 4,9⋅10 −324 3,7⋅10 −1126
Cea mai mică valoare (>0), normală 1,2⋅10 −38 2,3⋅10 −308 1⋅10 −1091
Cea mai mare valoare 3,4×10 +38 1,7×10 +308 9,9×10 +1091
câmpuri SEF SEF SEIF
Dimensiunile marjelor 1-8-23 1-11-52 1-15-1-63

Mașină epsilon

Spre deosebire de numerele în virgulă fixă , grila de numere pe care o poate afișa aritmetica în virgulă mobilă nu este uniformă: este mai densă pentru numerele cu exponenți mici și mai rară pentru numerele cu exponenți mari. Dar eroarea relativă de scriere a numerelor este aceeași pentru numerele mici și pentru cele mari. Epsilonul mașinii este cel mai mic număr pozitiv ε astfel încât (semnul indică adăugarea mașinii). În linii mari, numerele a și b , corelate astfel încât , mașina nu distinge.

Pentru o singură precizie , adică aproximativ 7 cifre semnificative . Pentru precizie dublă: , 15 cifre semnificative [1] .

Vezi și

Note

  1. E. Cheney, David Kincaid. Matematică numerică și calcul. — Cengage Learning, 2012. — 43– p. — ISBN 1-133-71235-5 .

Literatură

Link -uri