KULTUROSFERA

Biți, ASCII și numere: cum „gândește” calculatorul

Pe tablă te așteaptă azi un șir ciudat: 01000100 01000001 01000011 01001001 01000001. La finalul orei îl vei citi fără ajutor — și vei înțelege că exact așa arată, în adânc, orice mesaj, orice notă din catalog și orice melodie. Lecția trecută, „Mărimi analogice, date digitale", s-a oprit în momentul în care senzorul preda ștafeta: mărimea devenea numere. A rămas o întrebare deschisă: în ce formă ține calculatorul numerele acelea?

La finalul lecției vei ști să numeri în binar, să treci numere naturale din baza 10 în baza 2 și înapoi și să codifici un text cu ajutorul codului ASCII.

De ce doar 0 și 1

Calculatorul e construit din milioane de comutatoare minuscule, iar un comutator sigur pe el știe exact două stări: trece curent sau nu trece. Deschis sau închis. Nu există „pe jumătate deschis" de încredere — la vitezele la care lucrează un procesor, orice stare intermediară ar fi o sursă de erori. Așa că întreaga informatică s-a construit pe cea mai mică unitate de informație posibilă.

Un singur bit spune puțin: da sau nu. Dar biții pot fi puși unul lângă altul, și fiecare bit adăugat dublează numărul de combinații: 2 biți dau 4 combinații, 3 biți dau 8, iar 8 biți dau 256. Cu destui biți, poți da un cod oricărui lucru de pe lume.

Numărăm în binar

În baza 10, pozițiile cifrelor valorează 1, 10, 100, 1000 — puteri ale lui 10. În baza 2, aceeași idee, dar pozițiile valorează puteri ale lui 2: 1, 2, 4, 8, 16, 32... Fiecare bit spune dacă valoarea poziției lui se adună la total sau nu.

1684211011010110 în baza 2 = 16 + 4 + 2 = 22 în baza 10

Din binar în zecimal, deci: aduni valorile pozițiilor unde stă un 1. Invers, din zecimal în binar, mergi lacom de la stânga: pentru 13, cel mai mare cartonaș care încape e 8 (rămâne 5), apoi 4 (rămâne 1), apoi 1. Deci 13 = 8 + 4 + 1 = 1101 în baza 2.

Jocul numărătorii binare

Teoria se fixează la tablă, dar binarul intră în reflex printr-un joc. Mâna ta dreaptă are cinci degete — adică cinci biți: degetul mare valorează 1, arătătorul 2, mijlociul 4, inelarul 8, degetul mic 16. Deget ridicat înseamnă bit 1, deget strâns înseamnă bit 0.

Jucați pe perechi, trei runde:

  1. Numărătoarea. Numărați pe degete de la 0 la 31, pe rând, fără să săriți valori. Trei e degetul mare plus arătătorul; cinci e mijlociul plus degetul mare. Cine greșește o valoare reia de la zero. Primele conflicte apar pe la 7 și 8 — acolo se vede cine a înțeles trecerea: toți biții mici se strâng și se ridică următorul.
  2. Duelul. Unul arată un număr pe degete, celălalt îl spune în zecimal în cel mult cinci secunde. Cinci puncte câștigă duelul, apoi schimbați rolurile.
  3. Întrebarea de aur. Care e cel mai mare număr pe care îl poți arăta cu o singură mână? Toate degetele ridicate: 16 + 8 + 4 + 2 + 1 = 31. Cu ambele mâini ai 10 biți — și poți număra până la 1023. Spune-le asta părinților diseară.

Litere din numere: codul ASCII

După pauză trecem de la numere la text — a doua oră e despre litere. Calculatorul nu are nicio idee ce e o literă; el știe doar biți. Soluția, veche de peste 60 de ani, e o convenție: fiecărei litere i se atribuie un număr, mereu același, pe orice calculator din lume.

Fragmentul care ne trebuie azi — literele mari stau frumos în ordine, de la 65 la 90:

LiterăCodLiterăCodLiterăCodLiterăCod
A65H72O79V86
B66I73P80W87
C67J74Q81X88
D68K75R82Y89
E69L76S83Z90
F70M77T84spațiu32
G71N78U85

Ordinea alfabetică e păstrată în coduri — detaliu deloc întâmplător: datorită lui, calculatorul poate sorta alfabetic comparând pur și simplu numere. Iar acum poți sparge mesajul de pe tablă: 01000100 e 68 în binar (64 + 4), adică D. Continuă singur — sunt cinci litere și numele unei mașini pe care o știi.

Literele noastre cu diacritice — ă, î, ș, ț — nu încap în cei 128 de coduri ASCII. Pentru ele s-a inventat mai târziu Unicode, un „ASCII extins" cu peste 140 000 de caractere, de la ș-ul românesc la ideogramele chinezești. Principiul rămâne neschimbat: caracter, număr, biți.

Mesaje codate între colegi

Ultima parte a orei: fiecare echipă de bancă devine birou de cifru.

  1. Alege un cuvânt de 4-6 litere mari, fără diacritice — un oraș, un obiect din sală, o materie.
  2. Scrie codul ASCII zecimal al fiecărei litere, apoi transformă fiecare cod în binar pe 7 biți. Verificați-vă unul pe altul: o singură cifră greșită strică o literă întreagă.
  3. Dați biletul echipei din spate și primiți unul în schimb. Decodați contra cronometru: binarul în zecimal, zecimalul în literă, literele în cuvânt.
  4. Runda a doua, pentru echipele rapide: strecurați intenționat o eroare de un bit în mesaj. Poate cealaltă echipă să găsească litera stricată și să o repare din context? Exact asta fac, automat, codurile detectoare de erori din rețelele reale.

Exersează

  1. Transformă în baza 10: 111, 1010, 11001. Apoi în baza 2: 6, 19, 30. Scrie descompunerile, nu doar rezultatele.
  2. Câte numere naturale diferite poți reprezenta pe 4 biți? Dar pe 8 biți? Scrie regula generală într-o frază.
  3. Decodifică, folosind tabelul ASCII: 84 73 77 73 83 79 65 82 65. Ce cuvânt ai obținut și câți octeți ocupă el în memorie?
  4. Provocare. Un coleg susține că, dacă adaugi un bit la o reprezentare, poți reprezenta „cu câteva numere mai mult". Arată-i cu un calcul concret pe 5 și 6 biți de ce se înșală — și formulează corect ce se întâmplă de fapt.

Verifică-te

Activitate

Se încarcă activitatea…

Activitate

Se încarcă activitatea…

Activitate

Se încarcă activitatea…