Singularitățile numărului întreg și al aritmeticii reale

Calculele numerice pot fi efectuate pe un set de numere întregi sau pe un set de numere reale. Din punct de vedere matematic, numerele întregi reprezintă un subset al setului de numere reale. Prin urmare, s-ar părea că ar fi posibil să nu divizăm numerele în numere întregi și reale și să facem față numai unui tip de date numeric real.







Cu toate acestea, aritmetica întregului pe un calculator are trei avantaje foarte semnificative în comparație cu aritmetica reală:

• numerele întregi sunt reprezentate întotdeauna de valorile lor exacte;

• operațiunile aritmetice întregi dau rezultate exacte;

• Operațiile aritmetice întregi sunt efectuate mai repede decât operațiile de aritmetică plutitoare (plutitoare).

Dezavantajul întregului tip de date este o gamă relativ îngustă de valori acceptabile (pentru tipul Integer - de la -32768 la 32767). Când programul este executat, ieșirea unei valori întregi dincolo de aceste limite nu este controlată automat. În acest caz, se obține un rezultat eronat. În cazul în care există un astfel de pericol, programatorul trebuie să prevină în sine prevenirea unei depășiri întregi în programul său. Cel mai obișnuit tip este folosit pentru a reprezenta contoare, numere, indici și alte valori întregi.

Știți deja că întregul tip de date este ordinal. Amintiți-vă ce înseamnă:

• valorile de acest tip iau un set finit de valori care pot fi numerotate;

• pe setul de valori de acest tip, conceptele: "elementul anterior", "elementul următor" funcționează.

De ce nu este tipul de date real ordonat? Numerele reale din memoria calculatorului sunt reprezentate într-un format cu virgulă mobilă, adică sub forma unui set de perechi de numere - o ordine intregi si o mantisa normalizata. Deoarece dimensiunea celulei de memorie este limitată, în majoritatea cazurilor mantisa este "tăiată", cu alte cuvinte, aproximativă. Reprezentarea exactă din memorie are doar un set finit discret de valori reale. Prin urmare, setul de numere reale în reprezentarea mașinii (Figura 26) este un set finit discret, deși este o reflectare a continuumului numerelor reale.







Figura prezintă partea pozitivă a axei numerice reale, pe care valorile reprezentate cu precizie în tipul de date real sunt marcate cu liniuțe. Această imagine este reflectată simetric pe semiaxele negative.

Cu o valoare absolută crescătoare, intervalul dintre punctele vecine crește. Este egal (pentru o formă binar-normalizată cu un punct de plutire) 2-t x 2p = 2p-t, unde p este ordinea numărului și t este numărul de cifre binare din mantisă. Este clar că, pe măsură ce valoarea absolută a numărului crește, ordinea lui (p) crește și, în consecință, crește gradul dintre două valori învecinate. Pasul minim

De exemplu, dacă pmin = -64; pmax = 63; t = 24, atunci avem Rmin = 2-88; Rmax = 239.

Se pare că valorile setului de numere reale reprezentabile pot fi numerotate și astfel se definesc noțiunile "următor", "anterior" pe acesta. Cu toate acestea, distanța dintre două valori consecutive pe acest set se dovedește a fi subiectivă, în special, în funcție de dimensiunea celulei de memorie în care este stocat numărul. De exemplu, dacă sunt alocate 3 octeți pentru mantisă, atunci următoarea valoare este obținută prin adăugarea la mantisa a unei unități din a 24-a cifră; dacă 5 octeți sunt unități în cifra a 40-a.

Un număr infinit de numere reale este, în general, de neimaginat tocmai în memoria unui computer. Dacă valoarea reală a lui X se încadrează între două valori precise reprezentate de ri și ri + 1, atunci acesta este înlocuit cu o valoare mai mică în modul din această pereche de numere (unele tipuri de procesoare efectuează rotunjirea "corectă"). În consecință, în cazul general, numerele reale sunt stocate aproximativ în memorie; poartă o eroare în sine, care se numește eroarea de rotunjire a mașinii.

Din ceea ce sa spus, rezultă că dacă două numere X și Y satisfac condițiile r

Diferența dintre unitatea reală și numărul cel mai apropiat de ea, reprezentabilă în memoria mașinii, se numește mașina epsilon # 949;. Cu alte cuvinte, dacă ri = 1, atunci ri + 1 = 1 + # 949;. Este ușor de înțeles că amploarea mașinii # 949; este asociat doar cu lățimea mantistei în reprezentarea numerelor reale pe un computer dat.

Pentru a determina valoarea aparatului # 949; puteți utiliza următorul program:

În timp ce 1.0 + Eps> l.0 Nu







Trimiteți-le prietenilor: