Codurile ASCII

ASCII (prescurtare de la American Standard Code for Information Interchange) este o codificare standard prin care fiecărui caracter îi corespunde un număr întreg, astfel încât calculatorul să îl poată memora și prelucra.

În C++, un caracter de tip char este memorat de fapt ca un număr: codul său ASCII. De aici vine o proprietate foarte utilă: putem compara și transforma caractere folosind operații aritmetice obișnuite, la fel cum lucrăm cu numere. Tabelele de mai jos adună codurile pe care le întâlnim cel mai des atunci când prelucrăm șiruri de caractere.

Cifrele

Cifrele de la '0' la '9' au coduri ASCII consecutive, cuprinse între 48 și 57.

CifrăCod ASCIICifrăCod ASCII
048553
149654
250755
351856
452957

Fiindcă sunt consecutive, putem verifica dacă un caracter c conține o cifră comparându-l direct cu '0' și '9':

c >= '0' && c <= '9'   // echivalent cu:
c >= 48  && c <= 57    // adevarat doar daca in c avem o cifra

Scăzând '0' dintr-un caracter cifră obținem chiar valoarea ei numerică, iar adunând-o la loc facem transformarea inversă:

char c = '7';
int cifra = c - '0';   // cifra devine 7 (valoarea numerica)
char inapoi = cifra + '0';   // inapoi devine din nou '7'

Literele mari și mici

Literele mari ocupă codurile de la 65 la 90, iar literele mici de la 97 la 122. Fiecare literă mare și corespondenta ei mică sunt așezate în aceeași ordine alfabetică.

Literă mareCodLiteră micăCod
A65a97
B66b98
C67c99
D68d100
E69e101
F70f102
G71g103
H72h104
I73i105
J74j106
K75k107
L76l108
M77m109
N78n110
O79o111
P80p112
Q81q113
R82r114
S83s115
T84t116
U85u117
V86v118
W87w119
X88x120
Y89y121
Z90z122

Diferența dintre codul unei litere mari și al corespondentei mici este mereu 32. De aceea putem trece de la o formă la alta printr-o simplă adunare sau scădere:

char mare = 'A';
char mic = mare + 32;   // 'a'
char dinNouMare = mic - 32;   // 'A'

Publicitate

Simboluri și semne de punctuație

Dincolo de cifre și litere, tot din codul ASCII fac parte spațiul, semnele de punctuație și simbolurile folosite pentru operatori. Iată codurile celor mai des întâlnite:

CodSimbolDescriere
32(spațiu)spațiu
33!semnul exclamării
34"ghilimele
35#diez
37%procent (modulo)
38&ampersand
39'apostrof
40(paranteză rotundă deschisă
41)paranteză rotundă închisă
42*asterisc (înmulțire)
43+plus
44,virgulă
45-minus (cratimă)
46.punct
47/slash (împărțire)
58:două puncte
59;punct și virgulă
60<mai mic
61=egal
62>mai mare
63?semnul întrebării

Caractere speciale

Nu toate codurile corespund unor simboluri vizibile. Primele coduri (de la 0 la 31) sunt caractere de control, folosite pentru comenzi, nu pentru afișare. Trei dintre ele apar des în probleme:

CodCaracterRol
0'\0'caracterul nul, marca de sfârșit a unui șir de caractere
10'\n'rând nou (trecerea pe linia următoare)
32(spațiu)spațiul obișnuit dintre cuvinte

Codurile de peste 127 formează așa-numitul ASCII extins, care conține litere cu diacritice și alte simboluri. Acestea nu sunt însă standard: pot diferi de la un sistem la altul, așa că în problemele de Bacalaureat ne bazăm doar pe codurile de la 0 la 127.