You are on page 1of 6

Introducere

Baza de numeraţie utilizată pentru reprezentarea informaţiei în calculatoarele numerice este baza
2. Argumentele care au determinat această alegere sunt:
• *operaţiile aritmetice elementare în baza 2 pot fi asimilate cu operaţiile în logică
bivalentă efectuate într-o algebră booleană; în consecinţă, atât operaţiile aritmetice cât şi
operaţiile logice pot fi tratate unitar, prin intermediul funcţiilor logice din algebra booleană.
• *componentele elementare ale unui SC, utilizate pentru memorarea şi manevrarea
informaţiilor, indiferent de natura lor (dispozitive electronice, optice, magnetice, electrice,
etc.), se caracterizează prin două stări stabile (circuit închis / deschis, câmp magnetizat într-
un sens / în sens opus, câmp opac / transparent, etc.). Acest lucru face ca funcţionarea lor să
poată fi exprimată prin intermediul unor funcţii booleene.
• *proiectarea logică a dispozitivelor elementare ale unui calculator numeric se realizează
prin intermediul circuitelor logice care modelează funcţiile booleene dorite.

Codificarea şi reprezentarea informaţiei

1 Sisteme de numerotaţie

Se numeşte sistem de numeraţie totalitatea regulilor de reprezentare a numerelor folosind un


anumit set de simboluri distincte, numit alfabet; simbolurile sunt numite cifre.
Sistemele de numeraţie sunt de două tipuri:
• sisteme de numeraţie poziţionale
• sisteme de numeraţie nepoziţionale.

Sistemele de numeraţie poziţionale sunt acele sisteme de numeraţie pentru care valoarea unei
cifre din cadrul unui număr depinde de poziţia ocupată de acea cifră în cadrul numărului.
Exemplu: sistemul arab zecimal de numeraţie este unul poziţional. De exemplu, cifra 7 are valoarea 70 în numărul 41278 şi are valoarea 7000 în
numărul 27903.

Sistemele de numeraţie nepoziţionale sunt sistemele de numeraţie pentru care valoarea unei cifre
dintr-un număr nu este unic determinată de poziţia cifrei în număr ci de contextul în care se află
cifra.
Exemplu: sistemul roman de numeraţie este unul nepoziţional; valoarea cifrei I în numărul II este +1 iar în numărul IV este –1.

Baza unui sistem de numeraţie poziţional este dată de numărul de elemente care formează
alfabetul sistemului de numeraţie. Se consideră că alfabetul este format din cifre care sunt numere
întregi, consecutive, nenegative.

Exemplu: sistemul de numeraţie în baza 2 are alfabetul {0,1}; sistemul de numeraţie în baza 16 are
alfabetul {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

1
Sistemele de numeraţie poziţionale folosesc acelaşi sistem de reguli de reprezentare a numerelor;
ele diferă doar prin alfabetul pe care îl utilizează şi, implicit, prin bază.

2 Conversia dintr-o bază de numeraţie oarecare în baza 10

Fie sistemul de numeraţie în baza B, cu alfabetul {0,1,...,B-1}. Un număr raţional pozitiv


reprezentat în baza B prin şirul:
QB=bn-1bn-2...b0,b-1...b-m
are, prin definiţie, valoarea (în baza 10) :
Q10=bn-1*Bn-1 + bn-2*Bn-2 +…+ b0*B0+ …+ b-1*B-1 + b-m*B-m
Exemplul 1:
numărul 40A16=4*162+A*160=1024+10=1034.
Exemplul 2:
numarul 10,0112=1*21+1*2-2+1*2-1=2,375.

Se observă că prin conversia părţii întregi a numărului: bn-1...b0 se obţine un întreg, iar prin
conversia părţii fracţionare: b-1...b-m se obţine un număr subunitar.

3 Conversia din baza 10 într-o bază de numeraţie oarecare B se face conform următorului
algoritm

În primul rând trebuie subliniat că pentru conversia unui număr care conţine atât parte întreagă
cât şi parte zecimală trebuie convertite separat partea întreagă şi cea zecimală.

Procedura de conversia a părţii întregi:


• se fac împărţiri întregi, succesive la baza B, pornind de la numărul întreg care se
converteşte;
• în urma fiecărei împărţiri se obţine un nou cât şi un rest;
• noul cât este deîmpărţitul următoarei împărţiri întregi;
• algoritmul se încheie când se obţine câtul 0;
• resturile obţinute, începând cu ultimul şi până la primul, reprezintă cifrele numărului, de
la cea mai semnificativă la cea mai puţin semnificativă.

Procedura de conversia a părţii zecimale:


• se fac înmulţiri succesive, cu baza B, începând cu partea fracţionară a numărului care se
converteşte;
• partea fracţionară a fiecărui produs constituie deînmulţitul pentru produsul următor;
• partea fracţionară a numărului convertit în baza B este reprezentată de succesiunea
obţinută din părţile întregi ale tuturor produselor obţinute, începând cu primul produs, care
furnizează cifra cea mai semnificativă a rezultatului
• algoritmul se încheie cu un rezultat exact atunci când se obţine ca produs parţial un întreg
• algoritmul se încheie cu o aproximare a numărului fracţionar, după un anumit număr de
paşi, atunci când nu se poate obţine ca produs parţial un întreg.
Exemplul 1: Conversia numărului 4208 în baza 5 se obţine astfel:
4208/5=841 rest 3
841/5=168 rest 1
168/5=33 rest 3

2
33/5=6 rest 3
6/5=1 rest 1
1/5=0 rest 1
Rezultatul obţinut este 4208=113313.

Exemplul 2: Conversia numărului 0,208984375 în baza 8 se obţine astfel:


0,208984375*8=1,671875
0,671875 *8=5,375
0,375 *8=3
Rezultatul conversiei este 0,1538.

Observaţie: Numărul maxim care poate fi reprezentat în baza B cu m cifre este Bm-1.
Exemplu: Numărul maxim care se poate reprezenta cu 4 cifre, în baza 3, este 2222, adică 34-1.

4 Conversia din baza A în baza Ak şi invers

Pentru conversia unui număr din baza A în baza Ak se aplică algoritmul următor:
• se grupează cifrele numărului în baza A în grupe de câte k elemente, începând de la marca
zecimală la dreapta şi la stânga
• valoarea fiecărei grupe, în baza 10, corespunde unei cifre în baza Ak
• numărul în baza Ak este numărul format de cifrele obţinute prin conversiile de la pasul precedent
Exemple:
Numărul (102001121)3=(12047)9
Numărul (1020,01121)3=(36,153)9

5 Pentru conversia din baza Ak în baza A se aplică algoritmul următor:

• se reprezintă fiecare cifră a numărului din baza Ak în baza A, pe lungime de k cifre


• reprezentarea numărului în baza A se obţine prin concatenarea grupelor de câte k cifre obţinute
la pasul precedent.
Exemplu:
Numărul (7A0F1)16=(01111010000011110001)2.

6 Operaţii simple cu numere scrise în diferite baze

În continuare vor fi prezentate operaţiile de adunare şi scădere a numerelor scrise în binar, octal
şi hexazecimal a numerelor întregi fără semn.

Adunarea
Adunarea se face după aceleaşi reguli ca în zecimal, cu observaţia că cifra cea mai mare dintr-o
baza “b” va fi b-1 (adică 9 in zecimal, 7 in octal, 1 in binar şi F în hexazecimal). Deci dacă prin
adunarea a două cifre de rang “i” se va obţine un rezultat mai mare decât b-1, va apare acel transport
spre cifra de rang următor “i”+1, iar pe poziţia de rang “i” va rămâne restul împărţirii rezultatului
adunării cifrelor de rang “i” la bază. Transportul spre cifra de rang “i”+1 va deveni o nouă unitate la
suma cifrelor de rang “i”+1, adică se va mai aduna acel transport 1.

Exemple:
1111 1 11 11
01010110(B)+ 1364(Q)+ 6D8A32(H)+

3
10110101(B) 3721(Q) 33E4C8(H)
100001011(B) 5305(Q) A16EFA(H)

S-a marcat transportul de o unitate la cifra de rang superior prin scrierea unui 1 deasupra cifrei de
rang superior la care s-a făcut transportul. Operaţia de adunare în binar este utilă la reprezentarea
numerelor în complement faţă de 2 când se alege varianta adunării valorii 1 la reprezentarea din
complement faţă de 1 (vezi lucrarea cu reprezentarea datelor).

Exemple:
• Să se adune cele 2 numere întregi 347(D) şi 438(D) convertite mai sus în lucrare în bazele 16 si 8 si
să se verifice rezultatul prin conversia lui in baza 10

347(D)+ 438(D) = 785(D)


15B(H) + 1B6(H) = 311(H). Verificare: 311(H) = 3*256+1*16+1 = 785
533(Q) + 666(Q) = 1421(Q). Verificare:1421(Q) = 1*512+4*64+2*8+1 = 785

Scăderea
Si pentru scădere sunt valabile regulile de la scăderea din zecimal şi anume: dacă nu se pot
scădea două cifre rang “i” (adică cifra descăzutului este mai mică decât a scăzătorului) se face
“împrumut” o unitate din cifra de rang următor (“i”+1). În cazul în care cifra din care se doreşte
realizarea “împrumutului” este 0, se face “împrumutul” mai departe la cifra de rang următor.

Exemple:
.. . .
01011010(B) – A3D4(H) –
01001100(B) 751B(H)
00001110(B) 2EB9(H)

• Să se scadă cele două numere întregi 347(D) şi 438(D) convertite mai sus în lucrare în bazele de
numeraţie 16 şi 8 şi să se verifice rezultatul prin conversia lui în zecimal.

438 – 347 = 91(D)


1B6(H) – 15B(H) = 5B(H). Verificare: 5B(H) = 5*16+11 = 91
666(Q) – 533(Q) = 133(Q). Verificare 133(Q) = 1*64+3*8+3 = 91

Operaţia de scădere este utilă când se doreşte reprezentarea numerelor în complement faţă de 2 şi
se efectuează scăderea din 2nr_biti_reprez + 1 a numărului reprezentat în modul.

7 Biţi şi bytes

Biţi Unitatea de măsură de bază utilizată în măsurarea informaţiei se numeşte bit. Capacitatea
hard-disk-ului, a memoriei RAM, mărimea fişierelor toate se măsoară în biţi. Bitul este echivalent cu o
singură cifră din sistemul de numerotaţie zecimal. Cifrele iau valori de la 0 la 9, bitul poate lua două
valori 0 şi 1, adică reprezentarea în baza doi (binar). Alegerea reprezentării binare s-a făcut din
considerente tehnice. Electronic este simplu şi ieftin să reprezinţi un bit în binar. Cuvântul bit s-a născut
din îmbinarea a cuvintelor: binary digit.

4
Bytes Rareori în reprezentarea datelor vor fi utilizaţi biţii. În cele mai multe cazuri se foloseşte
gruparea acestora câte 8. Această grupare poartă numele de byte sau în româneşte octet. 1 byte
reprezintă pentru calculator cantitatea de informaţie echivalentă cu o literă de text.
Notaţiile prescurtate fac diferenţa între bit (notat cu "b") şi Byte (notat cu "B"). Dar fiindcă
aceste unităţi sunt foarte mici în multe cazuri practice, cel mai adesea se folosesc multiplii lor, cu
prefixele uzuale folosite şi în cazul altor unităţi de măsură.
În tabelul următor sunt daţi multiplii biţilor şi octeţilor:
Prefix BIŢI BYTES (OCTEŢI)
Multipl Cantitate Multiplu Cantitate
u
Kilo Kilobit 1024 biţi KiloByte 1024 Bytes
Mega Megabit 1024 Kb MegaByte 1024 KB
Giga Gigabit 1024 Mb GigaByte 1024 MB
Tera Terabit 1024 Gb TeraByte 1024 TB

Codul ASCII (American Standard Code for Information Interexchange) Cu 8 biţi într-un
byte se pot reprezenta 256 de valori de la 0 la 255:
0 = 00000000
1 = 00000001
2 = 00000010
...
254 = 11111110
255 = 11111111

Setul de coduri ASCII este folosit pentru reprezentarea binară a caracterelor pe 8 biţi, adică
maxim 256 caractere. Codul ASCII se împarte în:
- codul ASCII neprintabil cu coduri de la 0 la 31
- codul ASCII standard care cuprinde codurile de la 32 la 127 şi conţine caracterele standard
utilizate de calculatoare şi corespunzătoare versiunii mai veche pe 7 biţi a codului ASCII
- codul ASCII extins care cuprinde codurile de la 128 la 255 şi conţine caractere programabile
printre ele se află şi caracterele străine de limba engleză, caractere speciale, caractere grafice.

8 Reprezentarea numerelor întregi în Mărime şi Semn (MS) în Complement faţă de 1 şi de 2


(C1,C2)

În general, constantele şi variabilele întregi se reprezintă pe un octet, pe un cuvânt (2 octeţi),


două cuvinte (dublu cuvânt), sau patru octeţi. La toate reprezentările bitul cel mai semnificativ
reprezintă semnul, iar restul reprezentării (ceilalţi biţi) se folosesc pentru reprezentarea în binar a
numărului (numerele negative au o reprezentare diferită a modulului în cele trei tipuri de reprezentări).
Există deci două câmpuri în reprezentarea numerelor întregi: semnul şi modulul. La toate cele
trei moduri de reprezentare semnul este 0 pentru numerele pozitive şi 1 pentru numerele negative.
Câmpul pentru modul se reprezintă astfel:
• La reprezentarea în mărime şi semn (MS) se reprezintă modulul numărului, deci reprezentarea unui
număr se va face punând 0 sau 1 pe bitul semn, în funcţie de valoarea pozitivă, respectiv negativă a
numărului, iar pe restul reprezentării se va pune valoarea modulului său în baza 2.
• La reprezentarea în complement faţă de 1 (C1) dacă numărul este pozitiv, reprezentarea este la fel ca
la mărime şi semn, adică se reprezintă modulul numărului, iar bitul semn este implicit 0. Dacă
numărul este negativ, atunci se complementează toţi biţii reprezentării numărului în modul, adică

5
biţii 1 devin 0 iar cei cu valori 0 devin 1, astfel ca bitul semn va fi pe 1. Trebuie reţinut faptul că se
face complementarea reprezentării numărului în modul, adică se reprezintă mai întâi numărul
pozitiv, după care se complementează toţi biţii.
• La reprezentarea în complement faţă de 2, dacă numărul este pozitiv se reprezintă la fel ca la mărime
şi semn, respectiv ca la complement faţă de 1, adică se reprezintă numărul în modul, iar bitul de
semn este 0. Dacă numărul este negativ, atunci se complementează faţă de 2 reprezentarea numărului
în modul şi anume se scade din valoarea 2n+1 (unde n este numărul de biţi pe care se face
reprezentarea, bitul de semn devenind automat 1) reprezentarea în modul; o altă cale de a obţine
reprezentarea în complement faţă de 2 a numerelor negative este adăugând valoarea 1 la
reprezentarea numărului negativ în complement faţă de 1.

Din modul de reprezentare a numerelor în cele trei forme rezultă că numerele pozitive au aceeaşi
reprezentare atât în mărime şi semn cât şi în complement faţă de 1 şi în complement faţă de 2.
O atenţie sporită trebuie acordată spaţiului minim (număr minim de octeţi) pe care se poate
reprezenta un număr în cele trei moduri de reprezentare. De exemplu când se doreşte aflarea numărului
minim de octeţi pe care se poate reprezenta numărul 155 trebuie să se ţină cont că pentru reprezentarea
modulului este la dispoziţie mai puţin cu un bit (cel de semn) din spaţiul ales pentru reprezentare. În
acest caz deşi valoarea modulului său încape pe un octet (155 = 9Bh), numărul nu se poate reprezenta pe
un octet în nici un mod de reprezentare, deoarece bitul semn trebuie reprezentat separat, altfel la
interpretarea reprezentării 9Bh, primul bit fiind 1, reprezentarea va fi a unui număr negativ în loc de
numărul dorit. În concluzie, pentru reprezentarea numărului 155 va fi nevoie de minim 2 octeţi
(reprezentarea se face pe multiplu de octeţi), iar numărul va fi reprezentat astfel: 009Bh în toate cele trei
moduri de reprezentare, fiind pozitiv.
Exemple:
Să se reprezinte pe 4 octeţi următoarele numere: 157, 169, -157, -169
157(D) = 1001 1101(B) = 9D(H)
Deci reprezentarea in MS. C1 si C2 va fi 00 00 00 9D (H)
169(D) = 1010 1001(B) = A9(H)
Deci reprezentarea in MS, C1 si C2 va fi: 00 00 00 A9 (H)
Pentru –157, se reprezintă mai întâi în modul (este calculat mai sus) şi se obţine:
MS: 1000 0000 0000 0000 0000 0000 1001 1101 (B) = 80 00 00 9D (H)
C1: 1111 1111 1111 1111 1111 1111 0110 0010 (B) = FF FF FF 62 (H)
C2: 1111 1111 1111 1111 1111 1111 0110 0011 (B) = FF FF FF 63 (H)
Pentru –163 analog:
MS: 80 00 00 A9 (H)
C1: FF FF FF 56 (H)
C2: FF FF FF 57 (H)

9 Legătura dintre baza 2 şi baza 16

Chiar dacă sistemul de calcul utilizează ca unitate fundamentală un bit adică binary digit, în practică
se folosesc grupări de biţi (de exemplu pentru măsurarea dimensiunii fişierelor folosim octeţii (bytes) şi
multiplii acestuia, 1 byte este format din 8 biţi). În cazul programării, al depanării însă se utilizează o
altă convenţie: gruparea biţilor câte 4. Cea mai mare valoare pe care o putem obţine este 1111(2) adică în
zecimal 15. Numărul de combinaţii al grupării biţilor câte patru este 16 combinaţii (24). Putem
concluziona că această grupare corespunde codificării în baza 16, hexazecimală sau hexa mai pe scurt.
Este mult mai la îndemână să utilizăm această convenţie decât să prelucrăm şiruri lungi de 1 şi de 0.
Pe de altă parte două grupări de câte patru biţi reprezintă un byte, deci convenţia este utilă.
Trebuie reţinut că indiferent dacă este vorba de hexa, biţi sau orice altă formă de reprezentare,
informaţia în calculator sub o singură formă: şir de 0 şi de 1.

You might also like