Cunoaște Intuit, sistemul de curs de date de tip numeric

Rezumat: Subiectul acestui curs este de a examina datele de sistem de tip numeric. Exemple practice, precum și definiții și concepte de bază

Scopul principal al oricărui program de aplicație este de a transforma datele originale în conformitate cu un algoritm predeterminat și o mare parte a datelor sursă este de obicei reprezentată de o informație numerică. În această secțiune ne uităm la forma de date numerice în înregistrarea în programe C, C ++, și un set de operații care pot fi folosite pentru orice tip de date numerice. Sistemul pe termen lung. utilizat în titlul acestei secțiuni, aceasta înseamnă că datele de acest tip sunt „nativ“ pentru sistemul de programare. Ele nu ar trebui să fie descrise, nu este necesar să se determine modul de a face operatii aritmetice sau sunt orice alte operațiuni privind datele acestor tipuri. Uneori, datele se numește baza. De regulă, tipuri de date sistem de limbi algoritmice repetă formatele de numere care sunt furnizate de comenzile mașinii de sistem PC.

3.1. Tipuri de date numerice și reprezentarea lor în memoria calculatorului

3.1.1. Reprezentarea internă a datelor întreg

Pentru a stoca date întregi cu conectare IBM PC-ul folosind codul binar opțional. Această caracteristică se aplică numai numere negative. Pentru a obține un număr negativ de cod suplimentar necesar pentru a transforma toți biții de numărul pozitiv corespunzător, și se adaugă unul la MSB. De exemplu:

Cunoaște Intuit, sistemul de curs de date de tip numeric

Cod adițional permite aproximativ 25% accelera operațiunile, cum ar fi adunare și scădere.

3.1.2. octet de date întreg

Cele mai scurte date întregi cu semn reprezentate în memoria PC compatibil IBM cu un singur octet, care poate găzdui orice număr în intervalul -128-127 înregistrate în codul adițional. In C, C ++, pentru a declara variabile de acest tip se utilizează specificator char. Într-un octet poate fi, de asemenea, aranjate și numărul întreg cel mai scurt fără semn. În terminologia astfel de numere C corespunzătoare specifier unsigned char. Gama de date valide mutat, astfel, la dreapta și este egal cu [0, 255].

3.1.3. date întreg dublu-octet

3.1.4. date întreg patru octeți

Pentru a descrie patru octeți de date de tip întreg în limbajul C, C ++ foloseste specifiers lung (echivalent cu long int) și unsigned long. Mediul de programare vizual specificatorilor C ++ Builder int și lung sunt echivalente.

3.1.5. date întreg opt octeți

In ciuda faptului ca microprocesoare IBM PC a fost mult timp susținut de format întreg opt octeți, care oferă o gamă largă de -2 63-2 63 -1. sistem de programare pentru o lungă perioadă de timp a evitat acest format, sau folosit-o într-un mod special. De exemplu, sistemul Turbo Pascal bazat pe acest tip de format de date oferite comp. care a fost atașat la categoria de date de tip reale. În mass-media vizuale moderne, acest tip de date în forma sa naturală este un tip numeric Int64 obiecte. În viitorul apropiat, sistemul va beneficia de programare și întreg extra-lung tip de date int128.

3.2. Reprezentarea internă a tipurilor de date reale

Pentru reprezentarea internă a datelor de tip real, se caracterizează prin faptul că, în zona de memorie corespunzătoare stoca două componente - mantise m și ordinea p. număr Inutil x, în acest caz, este produsul de m * 2 p. Astfel, mantisa determină numărul de cifre semnificative și un semn, iar ordinea - poziția punctului, care se datorează acest lucru, deoarece „plutește“ între cifre semnificative (de aici termenul - formatul în virgulă mobilă). Această metodă de reprezentare a datelor numerice permite același număr de biți alocați stoca numere de a extinde semnificativ gama de date valide.

Noi încercăm să estimeze câștigul în intervalul de numere permise, care prevede format de date reale în comparație cu formatul întreg. Luați în considerare un 32 de biți numere binare. valori cu un semn în acest format vă permite să lucrați cu numere aparținând intervalului modulo [0, 2 * 10 septembrie]. Să presupunem că pentru un număr în virgulă mobilă într-un cuvânt de 32 de biți rezervate 1 bit pentru semnul numărului, 8 biți pentru procedura și 23 descărcarea rămase - o mantisă. Întrucât numărul minim reprezentabile este egal cu produsul mantisei minim (2 -1) la comanda minimă (2 -128), adică 2 -129. care corespunde aproximativ 10 -39. Cel mai mare număr al modulului este produsul (1-2 -23) * 2 127. care corespunde aproximativ 10 38. Astfel, în cazul în care întregul număr de suprapunere între 9 ordine de mărime, format în virgulă mobilă la același cuvânt de biți acoperă o gamă de 77 de ordine de mărime. Cu toate acestea, trebuie să se constate, iar pierderea numărului de cifre semnificative. format întreg pe 32 de biți suportă 10 cifre semnificative, în timp ce datele reale 23-biți mantisei vă permit să lucreze de la 7-8 semne zecimale.

Cele mai frecvent utilizate tipuri de numere reale reprezentate scurt (4 bytes) si lungime (8 bytes) de date. Formatul real de scurt prevede reprezentarea modulo numerelor în intervalul de la aproximativ 10 -38 până la 10 38 7-8 cifre zecimale semnificative. Pentru un interval format de 8-byte este extins foarte mult - de la 10 -308 la 10 308. iar numărul de cifre semnificative este crescut la 15-16. Coprocessor IBM PC oferă date în format reale desyatibaytovy avansate, care acoperă intervalul (în valoare absolută) de 10-10 4932 -4932 și păstrează 19-20 cifre semnificative.

Reprezentarea mașinii a datelor reale de diferite tipuri în IBM PC-ul nu este menținută o anumită ideologie comună. Motivul este, în toate probabilitățile, diferitele straturi ale hardware-ului asupra deciziilor anterioare luate în timpul dezvoltării de procesoare la diferite departamente Intel. Prin urmare, există apar astfel de nuanțe ar fi salvarea în memoria RAM sau nu pentru a păstra cel mai semnificativ bit al mantisei. reprezentarea mantisei sub forma unei fracționar pur (0,5 <= m <1 ) или смешанного ( 1 <= m <2 ) числа и т.п. Прикладных программистов эти детали мало интересуют, однако при создании специальных системных компонент с точным представлением данных приходится считаться.

3.3. Reprezentarea externă a constantelor numerice

Programele în C, C ++ există literal și numit constante numerice întreg sau tip reale. Constantele numerice. Așa cum este utilizat aici, programele în aritmetică sau expresii logice numite literal. Ele sunt prezentate cu literals numerice - cifre, semne + sau - dots care separă partea întreagă a fracțiunii, indicatorii de ordine zecimale. De exemplu:

Spre deosebire de Constante, programatorii folosesc adesea constante, cum ar fi variabile care au nume individuale:

În conformitate cu reprezentarea externă a informațiilor numerice, ne referim la metodele de înregistrare a datelor utilizate în textul programului, la un set de numere introduse în calculator, la cererea programului, cu rezultatele afișate pe ecranul de afișare sau o imprimantă.

Având un punct natural de intrare (3.1415) sau despre indicatorul zecimal (314.159265e-02, 314.159265E-02) înseamnă că valoarea corespunzătoare este reprezentată în calculator sub forma unui numere reale virgulă mobilă.

Pe lângă reprezentarea naturală a constantelor numerice ca un întreg sau un număr real de limbaje de programare permit o varietate de aditivi de la început ( „prefixe“) sau de capăt ( „sufixe“) număr determinarea mijloacelor de conversie și stocare a datelor într-o memorie de calculator.

Limbajul de programare C este utilizat în mod activ ca prefixe și sufixe

  • 0x5,0X5 - întreg hexazecimal (prefix - 0x sau 0X);
  • 05 - întreg octal (prefix - zero, semnificativ la început);
  • 5H, 5h - intreg scurt (sufix - h sau H din SHORT)
  • 5U, 5u - întreg fără semn (sufix - u sau U. din Nesemnat);
  • 5HU, 5hu, 5Hu, 5hU - scurt întreg fără semn;
  • 5L, 5l - întreg lung (sufix - l L. sau din Long);
  • 5LU, 5lu, 5Lu, 5lU - întreg lung unsigned;
  • 5f, 5F - număr real scurt (sufix - f sau F. din float);
  • 5LF, 5E, 5E, 5lf, 5Lf, 5lF, 5E, 5E - numărul lung reale.

Limba de intrare BCB sistem de programare vizuală permite în plus utilizarea următoarelor sufixe:

  • i8 - pentru numere întregi semnate pe un octet (de exemplu, 127i8)
  • I16 - pentru numere întregi dublu-octet semnate;
  • I32 - pentru numere întregi semnate patru octeți;
  • I64 - pentru numere întregi semnate de opt octeți;
  • ui64 - pentru opt-byte numere întregi fără semn.