Număr întreg (computer)
În informatică , un întreg (sau în forma sa engleză integer , adesea prescurtat în int ) este definit ca orice tip de date care poate reprezenta un subset al setului matematic de numere întregi .
Valoare și reprezentare
Valoarea unui tip de date întregi constă din întregul la care corespunde. Reprezentarea sa constă în modul în care este stocat în memoria computerului. Datele întregi pot fi semnate sau nesemnate , ceea ce discriminează capacitatea sa de a reprezenta numere negative.
Cea mai comună metodă de reprezentare a acestui tip de date este un șir de biți , utilizând sistemul binar . Ordinea octeților din șir poate varia. Lungimea sau precizia este numărul de biți utilizați în reprezentare. Un tip de date întregi cu precizie n poate reprezenta până la 2 n valori; de exemplu, un tip nesemnat poate reprezenta numerele de la 0 la 2n -1.
Există trei moduri diferite de a reprezenta numerele negative într-un sistem binar. Cel mai comun este „ complementul celor doi ”, care vă permite să reprezentați numere de la -2 (n-1) la 2 (n-1) -1. Această metodă este convenabilă deoarece creează o corespondență unu-la-unu între valori și reprezentări și pentru că nu este necesar să se facă distincția între valorile semnate și nesemnate în operațiile de adunare și scădere. Celelalte metode utilizate sunt cele de „semn și valoare absolută” și „complementul cuiva” (vezi reprezentarea numerelor relative ).
Tipuri comune de date întregi
Pic | Nume | Domeniul de aplicare | Angajamente |
---|---|---|---|
8 | Octet , octet | Semnat: -128 până la +127 Nesemnat: de la 0 la +255 | Caracterele ASCII , caracterul C (minim), octeții Java |
16 | Jumătate cuvânt, cuvânt | Semnat: -32,768 până la +32,767 Nesemnat: de la 0 la +65.535 | UCS-2 caractere , int C scurt (minim), numere întregi C (minim), caracter Java, Java scurt |
32 | cuvânt, cuvânt dublu (dublu), lung | Semnat: de la -2.147.483.648 la +2.147.483.647 Nesemnat: de la 0 la +4.294.967.295 | UCS-4 caractere , Culoare adevărată cu alfa, C int (normal), C long int (minim), Java int |
64 | cuvânt dublu, lung, cvadruplu | Semnat: de la −9.223.372.036.854.775.808 la +9.223.372.036.854.775.807 Nesemnat: de la 0 la +18.446.744.073.709.551.615 | C long int (pe sistemele Linux pe 64 de biți [1] ), C99 long long int (minim), Java long |
128 | Cu semn: de la −170.141.183.460.469.231.731.687.303.715.884.105.728 la +170.141.183.460.469.231.731.687.303.715.884.105.727 Nesemnat: de la 0 la +340.282.366.920.938.463.463.374.607.431.768.211.455 | C int __attribute__ ((mode (TI))) (pe sistemele pe 64 de biți cu gcc ) | |
n | N- bit întreg | Semnat: -2 ^ {n-1} până la 2 ^ {n-1} -1 Nesemnat: 0 la 2 ^ {n} -1 |
De obicei, fiecare procesor acceptă un număr mic de tipuri de date, atât semnate, cât și nesemnate. Tabelul de mai sus prezintă tipurile acceptate de majoritatea procesoarelor de pe piață în hardware . Limbajele de programare la nivel înalt permit, de exemplu, numere constând din numărul dublu de biți în comparație cu maximul suportat de hardware .
Unele limbi, cum ar fi LISP , REXX și Haskell , acceptă numere de "precizie arbitrară" (cunoscute și ca numere întregi sau bignum de "precizie infinită"); alte limbi au biblioteci care vă permit să reprezentați numere prin seturi de variabile mai mici, cum ar fi BigInteger- ul Java . Aceste metode folosesc pentru reprezentarea numărului câtă memorie este necesară, dar memoria computerelor este finită și, prin urmare, aceste metode permit să reprezinte un set finit de numere întregi. Cu toate acestea, cu 8 KB de memorie, este posibil să se reprezinte numere de 2466 cifre.
Un tip de date boolean sau de semnalizare poate reprezenta doar două valori: 0 și 1, de obicei asociate cu false și , respectiv, adevărate . Acest tip poate fi stocat pe un singur bit, dar un octet complet este utilizat în general pentru ușurința adresării și viteza de acces.
Un șir de patru biți se numește nibble : unul dintre acestea corespunde unei cifre în codificare hexazecimală și conține o cifră sau un cod de semn în zecimal binar .
Un întreg lung ( întreg lung) poate conține un număr întreg pozitiv sau negativ cuprins într-un interval egal sau mai mare decât cel al unei variabile întregi normale pe aceeași platformă. În practică, este obișnuit ca un întreg lung să ocupe dublu sau același spațiu ca un întreg întreg, deși acest lucru nu este necesar. O variabilă definită cu tipul întreg lung într-un limbaj de programare poate avea o dimensiune diferită de o variabilă definită cu un tip similar într-un alt limbaj. În plus, în unele limbi, cum ar fi Java , dimensiunea este fixă pentru toate platformele , în timp ce în altele depinde de tipul de mașină.
Următorul este un tabel cu cele mai comune valori întregi lungi în diferite limbaje de programare:
limbaj de programare | platformă | introduceți numele | spațiu în octeți | Valoare minimă | valoare maximă |
---|---|---|---|---|---|
VB | Windows | Long | 4 | −2.147.483.648 sau −2 31 | 2.147.483.647 sau 2 31 −1 |
VBA | Windows , Mac OS | Long | 4 | −2.147.483.648 sau −2 31 | 2.147.483.647 sau 2 31 −1 |
VB.NET | toate platformele | long | 8 | −9.223.372.036.854.775.808 sau −2 63 | 9.223.372.036.854.775.807 sau 2 63 −1 |
Java | toate platformele | long | 8 | −9.223.372.036.854.775.808 sau −2 63 | 9.223.372.036.854.775.807 sau 2 63 −1 |
C # | toate platformele | long | 8 | −9.223.372.036.854.775.808 sau −2 63 | 9.223.372.036.854.775.807 sau 2 63 −1 |
PHP | toate platformele | $ | 8 | −9.223.372.036.854.775.808 sau −2 63 | 9.223.372.036.854.775.807 sau 2 63 −1 |
API-ul Windows definește tipul LONG
ca un număr întreg de 4 octeți. Acest lucru se aplică în mod egal sistemelor de 16, 32 și 64 biți din motive de compatibilitate inversă .
Indicatori
Un indicator adesea, dar nu întotdeauna, constă dintr-un număr întreg de o lungime dată. Acesta este adesea cel mai susținut de sistem în hardware . Valoarea numărului este adresa către care indică indicatorul.
Octet și octet
Termenul de octet se referea inițial la cea mai mică cantitate de memorie adresabilă : în trecut au fost folosiți 5,6,7,8 și octeți de 9 biți. Au fost create, de asemenea, computere care ar putea adresa biți unici sau numai cuvinte de 16 sau 32 de biți, pentru care termenul de octet nu a fost deloc folosit.
Termenul "octet" se referă numai la cantități de memorie de 8 biți. Este utilizat în principal pentru rețelele de calculatoare , unde computerele care utilizează mai multe formate ar trebui să comunice.
În prezent, termenul „octet” a căzut în desuetudie împreună cu celelalte formate și este în general identificat cu termenul „octet”.
Octetii sunt folosiți pentru a măsura orice cantitate de date de calcul, fie că este un șir de text de 50 de octeți, un fișier de 100 KB, un modul RAM de 128 MB sau un hard disk de 30 GB . Prefixele utilizate pentru unitățile de măsură sunt adesea aceleași ca în sistemul internațional , dar cantitățile sunt diferite; acest lucru este deosebit de important pentru hard disk-uri, ai căror producători își promovează capacitatea în unități SI, făcându-le să pară mai capabile decât sunt de fapt (vezi articolul despre prefixele binare ).
Cuvânt
Termenul cuvânt (în engleză cuvânt) este utilizat în calcul pentru grupuri mici de biți care pot fi prelucrate simultan de CPU-ul unei anumite arhitecturi. Mărimea cuvântului este specifică acestuia din urmă. Au fost folosite cuvinte de diferite dimensiuni, cum ar fi 6, 8, 12, 16, 18, 24, 32, 36, 39, 48, 60 și 64 de biți. Având în vedere dependența acestuia de arhitectură, dimensiunea cuvântului este determinată de primul procesor al unei familii, indiferent de compatibilitatea versiunilor ulterioare. Înțelesul termenilor derivați jumătate de cuvânt , cuvânt dublu , cuvânt lung , cuvânt cvadruplu depinde întotdeauna de CPU și de sistemul de operare . Începând cu 2004 , cuvintele pe 32 de biți sunt cele mai utilizate în computerele utilizate în mod obișnuit, în timp ce cuvintele pe 64 de biți sunt utilizate în sistemele mari. Multe procesoare încorporate folosesc încă cuvinte pe 8 și 16 biți, în timp ce cuvintele pe 36 de biți sau cel puțin nu multiplii de 8 biți, utilizați în primele zile de calcul, au dispărut împreună cu octeți non-8 biți.
Notă
- ^ Agner Fog, Convenții de apelare pentru diferite compilatoare și sisteme de operare C ++: Capitolul 3, Reprezentarea datelor ( PDF ), pe agner.org , 16 februarie 2010. Accesat la 30 august 2010 .