Înainte Înapoi Cuprins

10. Cum ține calculatorul meu lucruri în memorie?

Probabil că știți că totul într-un calculator este păstrat ca șiruri de biți (cifre binare; puteți să vă gândiți la ele ca multe butoane mici pornit-oprit). Aici vom explica cum acei biți sunt folosiți ca să reprezinte literele și numerele pe care calculatorul dvs. le mestecă.

Înainte să facem aceasta, trebuie să înțelegeți despre lungimea cuvântului a calculatorului dvs. Lungimea cuvântului este mărimea preferată a calculatorului pentru a muta unități de informație în jur; tehnic este lungimea regiștrilor procesorului, care sunt zonele pentru depozitare pe care procesorul le folosește să facă calcule aritmetice și logice. Când oamenii scriu despre calculatoare având mărimea în biți (numindu-le de exemplu ``32 biți'' sau ``64 biți''), la aceasta se referă.

Majoritatea calculcatoarelor (incluzând PCurile 386, 486, Pentium și Pentium II) au o lungime a cuvântului de 32 biți. Vechile mașini 286 aveau o mărime a cuvântului de 16. Mainframeurile (calculatoare imense) în stil vechi aveau deseori cuvinte de 36 biți. Puține procesoare (precum Alpha de la fostul DEC care acum este Compaq) au cuvinte de 64 biți. Cuvântul de 64 biți o să devină mai obișnuit în următorii cinci ani; Intel plănuiește să înlocuiască Pentium IIul cu un chip pe 64 de biți numit `Merced'.

Calculatorul vizualizează memoria core ca o secvență de cuvinte numărate de la 0 în sus, până la o valoare mare dependentă de mărimea memoriei dvs. Acea valoare este limitată de lungimea cuvântului, din cauza căreia mașini mai vechi precum 286 trebuiau să treacă prin contorsiuni dureroase ca să adreseze cantitați mari de memorie. Nu o să le descriu aici; ele încă le mai creează programatorilor bătrâni coșmaruri.

10.1 Numere Numerele sunt reprezentate fie ca cuvinte sau ca perechi de cuvinte,depinzând de lungimea de cuvânt a procesorului dvs. Un cuvânt de mașină de 32 biți este cea mai obișnuită marime.Aritmetica numerelor întregi este apropiată dar nu chiar matematicîn baza doi. Bitul cel mai nesemnificativ este 1, apoi 2, apoi 4 șiașa mai departe ca în binarul pur. Dar numerele cu semn sunt reprezentateîn notația twos-complement.Bitul cel mai semnificativ este un bit de semn careface cantitatea negativă, și fiecare număr negativ poate fi obținutdin valoarea pozitivă corespunzătoare inversând toți biții.De aceasta numerele întregi pe o mașină 32 biți sunt în intervalul-2^31 + 1 până la 2^31 - 1 (unde ^ este operatia de `ridicare la putere', 2^3 = 8). Acel al 32-lea bit este folosit pentru semn.Unele limbaje de calculator vă dau acces la aritmetică fără semn care este chiar în baza 2 doar cu numerepozitive. Cele mai multe procesoare și unele limbaje pot să lucreze cunumere în virgulă mobilă (această capabilitateeste construită în toate cipurile procesor recente). Numerele învirgulă mobilă vă dau un interval mult mai larg de valori decâtnumerele întregi și vă lasă să exprimați fracții. Felurile în carese realizează aceasta variază și sunt destul de complicate pentru ale discuta în detail aici, dar ideea generală asemenea așa numitei`notație știițifică', unde cineva ar putea să scrie (de exemplu)1.234 * 10^23; codarea numărului este împărțită într-omantisă (1.234) și partea exponentului (23) pentrunumarul putere a lui zece.

10.2 Caractere

Caracterele sunt normal reprezentate ca șiruri de șapte biți fiecare într-o codare numită ACSII (American Standard Code for Information Interchange - Codul Standard American pentru Interschimbare de Informație). Pe mașinile moderne, fiecare din cele 128 de caractere ASCII sunt cei șapte biți mai nesemnificativi dintr-un octet de 8 biți; octeții sunt împachetați în cuvinte de memorie așa încât (de exemplu) un șir de sașe caractere ocupă numai două cuvinte de memorie. Pentru un tabel al codurilor ASCII, tastați `man 7 ascii' la promptul dvs. Unix.

Paragraful precedent era înșelător în două feluri. Cel minor este că termenul `octet' este formal corect dar rareori folosit cu adevărat; cei mai mulți oameni se referă la un octet folosind byte și se așteaptă ca byții să fie de opt biți lungime. Strict vorbind, termenul `byte' este mai general; au existat, de exemplu, mașini de 36 biți cu byți de 9 biți (deși probabil nu vor mai exista din nou).

Cel major este că nu toată lumea folosește ASCII. De fapt, multă lume nu poate -- lui ASCII, în timp ce este bun pentru engleza americană, îi lipsesc multe caractere cu accent sau speciale de care au nevoie folositorii altor limbi. Chiar engleza britanică are probleme cu lipsa unui semn pantru liră.

Au fost câteva încercări de a repara această problemă. Toate folosesc bitul în plus pe care ASCII nu-l folosește, făcându-l jumătatea joasă a unui set de 256 de caractere. Cel mai răspândit este așa numitul set de caractere `Latin-1' (mai formal numit ISO 8859-1). Acesta este setul de caractere standard pentru Linux, HTML și X. Microsoft Windows folosește o versiune mutantă a lui Latin-1 care adaugă o mică cantitate de caractere, precum ghilimele duble prentru dreapta și stânga, în locuri pe care Latin-1 standard le lasă nefolosite pentru motive istorice (pentru mai multe detalii a necazurilor pe care aceasta le cauzează, vedeți pagina demoroniser).

Latin-1 se ocupă de limbile europene majore, incluzând engleza, franceza, germana, spaniola, italiana, olandeza, norvegiana, suedeza, daneza. Oricum, nici aceasta nu este destul de bun, și ca rezultat este o serie întreagă de seturi de caractere Latin-2 până la -9 pentru a se ocupa de lucruri ca greacă, arabică, evreiască și sârbo-croațiană. Pentru detalii, vedeți pagina Supa alfabetului ISO (n.t. Setul de caractere pentru limba română este ISO 8859-2).

Ultima soluție este un standard uriaș numit Unicode (și gemenul său identic ISO/IEC 10646-1:1993). Unicode este identic cu Latin-1 în 256 din sloturile sale cele mai mici. Peste acestea în spațiu pe 16 biți include greacă, chilirică, armeană, evreiască, arabică, devanagari, bengali, gurmukhi, gujarati, oriya, tamil, telugu, kannada, malayalam, thai, lao, georgian, tibetană, kana japoneză, setul complet al modernei coreene hangul, și un set unificat de ideografe chineze/japoneze/coreene (CJK). Pentru detalii, vedeți Home Pageul Unicode


Înainte Înapoi Cuprins