CURS PDN
BAZELE ARITMETICII
1.1. Sisteme de numeraţie
Prin sistem de numeraţie se înţelege totalitatea regulilor de reprezentare
ale numerelor cu ajutorul simbolurilor denumite cifre.
Sistemele de numeraţie pot fi poziţionale sau nepoziţionale. Un exemplu
de sistem poziţional este sistemul zecimal, iar un sistem nepoziţional
este cel roman. Într-un sistem poziţional, un număr N cu parte întreagă şi
parte fracţionară, separate prin virgulă, se poate scrie sub oricare din
următoarele forme:
Într-un sistem de numeraţie, cifra este un simbol care reprezintă
o cantitate întreagă. Numărul de simboluri permise pentru
reprezentarea cifrei într-un sistem de numeraţie se numeşte baza
sau rădăcina sistemului de numeraţie. Cifrele ai reprezintă
coeficienţii cu care se înmulţesc puterile qi ale bazei q în
dezvoltarea polinomială a numărului pentru obţinerea valorii sale.
Cifra an-1 din relaţiile (1.1) şi (1.2) este cifra cea mai semnificativă
(c.m.s.) a numărului, iar cifra a-m este cifra cea mai puţin
semnificativă (c.m.p.s.). În cazul sistemului de numeraţie binar,
pentru cifra binară se foloseşte prescurtarea de bit. Dacă m = 0,
numărul N este întreg. Dacă n = 0, numărul N este fracţionar şi
subunitar. Dacă m şi n sunt întregi şi diferiţi de zero, numărul N
este mixt.
Relaţia (1.2) explică de ce astfel de sisteme de numeraţie sunt denumite
poziţionale. Fiecare cifră ai contribuie la valoarea numărului respectiv cu
o pondere dată de puterea i a bazei q.
Pentru un sistem de numeraţie în baza q trebuie să existe q simboluri. La
sistemele de numeraţie cu baza q > 10 se introduc simboluri noi.
De exemplu, pentru sistemul hexazecimal se introduc literele de la A la
F.
Reprezentarea primelor 16 numere în sistemul zecimal, binar şi
hexazecimal este dată în Tabelul 1.1.
1.2. Conversia bazei de numeraţie
Pentru a deduce o metodă sistematică de conversie dintr-un sistem de
numeraţie în altul, folosim rezultatul cunoscut că, dacă N şi q sunt
numere întregi, există întotdeauna un singur întreg r (care nu este
negativ) mai mic decât q şi un singur întreg C, astfel încât:
1.2.1. Conversia numerelor întregi
Aplicăm această regulă la conversia unui număr întreg Np din
baza p în echivalentul său în baza q, adică Nq. Trebuie să
determinăm valorile întregi nenegative a0, a1, …, an-1, fiecare mai
mic decât q, astfel ca:
Prin împărţire cu baza q obţinem:
Deoarece atât câtul, cât şi restul sunt unici, egalând părţile fracţionare avem:
Împărţind câtul C0 la q şi utilizând rezultatele de mai sus, obţinem:
sau
Operaţia se continuă până când se obţine un cât egal cu zero.
Algoritmul de conversie a numerelor întregi este deci următorul:
1. Se împarte numărul iniţial Np (în baza p) la noua bază q. Se obţine câtul
C0 şi restul a0.
2. Se împarte câtul C0 la q. Se obţine câtul C1 şi restul a1.
3. Se continuă până când se obţine câtul Cn = 0. Resturile obţinute reprezintă
cifrele numărului convertit, a0 fiind cifra c.m.p.s.
Exemple
1) Conversie din zecimal în binar
2) Conversie din zecimal în octal
3) Conversie din zecimal în hexazecimal
1.2.2. Conversia numerelor fracţionare
Pentru conversia numerelor fracţionare subunitare trebuie
determinaţi coeficienţii întregi nenegativi a-1, a-2, …, a-m, fiecare
mai mic decât baza q, astfel încât:
Prin înmulţire cu baza q obţinem:
unde u-1 este partea întreagă, iar F1 este partea fracţionară a valorii
obţinute. Deci,
Înmulţind partea fracţionară F1 cu q obţinem:
deci:
Operaţia se continuă până când se obţine o parte fracţionară egală cu
zero sau se ajunge la precizia cerută.
Algoritmul de conversie a numerelor fracţionare este deci următorul:
1. Se înmulţeşte numărul iniţial Np (în baza p) cu noua bază q. Se obţine
partea fracţionară F1 şi partea întreagă a-1.
2. Se înmulţeşte partea fracţionară F1 cu q. Se obţine partea fracţionară F2
şi partea întreagă a-2.
3. Se continuă până când se obţine partea fracţionară Fm = 0 sau se ajunge
la precizia cerută. Cifrele întregi obţinute reprezintă cifrele numărului în baza
q, a-1 fiind cifra c.m.s.
Exemple
1) Conversie din zecimal în binar
Operaţia se continuă fără a se putea ajunge la Fm = 0. Deci, un număr
fracţionar finit într-un sistem de numeraţie nu poate fi reprezentat
întotdeauna printr-un număr finit într-un alt sistem de numeraţie.
2) Conversie din zecimal în octal
3) Conversie din zecimal în hexazecimal
Pentru numere fracţionare mai mari decât 1, partea întreagă şi cea
fracţionară se obţin separat.
În cazul particular în care baza finală q este o putere întreagă a bazei
iniţiale p:
se poate utiliza un procedeu mai simplu, deoarece unei cifre în baza q îi
corespund r cifre în baza p.
Numărul în baza p se partiţionează în grupe de câte r cifre, şi se
înlocuieşte fiecare grup de la dreapta şi de la stânga virgulei cu
echivalentul său în baza q.
Astfel, conversia din binar în octal se poate efectua prin înlocuirea
fiecărui grup de 3 cifre binare prin echivalentul său octal, iar conversia
din binar în hexazecimal se poate efectua prin înlocuirea fiecărui grup de
4 cifre binare prin echivalentul său hexazecimal. Dacă ultima grupă de
cifre binare de la stânga sau de la dreapta virgulei nu este completă, se
adaugă zerouri la stânga, respectiv la dreapta, până la completarea
grupei.
Exemple
În cazul în care baza iniţială p este o putere a bazei finale q:
se înlocuieşte fiecare cifră în baza p cu r cifre în baza q.
Astfel, conversia din octal în binar şi cea din hexazecimal în binar se
efectuează prin înlocuirea cifrelor octale, respectiv hexazecimale, printr-
un grup de 3, respectiv 4 cifre binare.
Exemple
Conversia din octal în hexazecimal şi din hexazecimal în octal se poate
efectua după ce s-a efectuat conversia în binar.
Exemple
1.2.3. Conversia binar-zecimală
Conversia unui număr binar întreg în echivalentul său zecimal se poate
efectua prin metoda înmulţirii repetate cu 2, cunoscând faptul că
operaţia se efectuează în sistemul zecimal. Se consideră numărul:
Pentru q = 2 rezultă următorul algoritm:
1. Se înmulţeşte cifra c.m.s. a numărului binar cu 2, şi se adună la rezultat
următoarea cifră semnificativă.
2. Se înmulţeşte rezultatul cu 2 şi se adună următoarea cifră semnificativă.
3. Se continuă până când s-a prelucrat şi cifra c.m.p.s. a numărului binar.
Rezultatul obţinut este echivalentul zecimal al numărului binar dat.
Exemplu
Pentru numere binare fracţionare (subunitare) există factorizarea:
Pentru q = 2 rezultă algoritmul:
1. Se împarte cifra c.m.p.s. a numărului binar cu 2, şi se adună
următoarea cifră semnificativă.
2. Se împarte rezultatul cu 2 şi se adună următoarea cifră
semnificativă.
3. Se continuă până când se efectuează împărţirea care corespunde
cifrei c.m.s. a numărului fracţionar.
Exemplu
În practică, aceste operaţii se efectuează mai simplu prin adunarea puterilor
bazei 2.
1.3. Operaţii aritmetice cu numere
fără semn
Exemple
În mod similar se poate proceda pentru conversia din hexazecimal în
zecimal.
Exemple
1.3.1. Adunarea
Adunarea a două cifre în baza q este o operaţie modulo q, deci
cifra cu valoarea cea mai mare va fi q-1 (de exemplu, 9 în
zecimal, 1 în binar, F în hexazecimal). Dacă rezultatul adunării a
două cifre de rang i depăşeşte această valoare, va apare un
transport către rangul i+1, care se va aduna la suma cifrelor de
rang i+1. Apariţia unui transport de la cifra c.m.s. indică o
depăşire a capacităţii de reprezentare a rezultatului.
În cazul adunării binare, cifra sumei este 1 dacă unul din termenii
adunării este 1. Cifra de transport este 1 numai dacă ambii termeni ai
adunării sunt 1. În Tabelul 1.2 se prezintă regula de adunare a două cifre
binare x şi y.
Exemple
1.3.2. Scăderea
La scăderea a două cifre de rang i, dacă cifra descăzutului este mai mică
decât cifra scăzătorului, apare un împrumut de la rangul i+1.
În cazul scăderii binare, diferenţa este 1 dacă fie descăzutul, fie
scăzătorul este 1. Împrumutul apare numai dacă descăzutul este 0 şi
scăzătorul este 1. În Tabelul 1.3 se prezintă regula de scădere a două
cifre binare x şi y.
Exemple
1.3.3. Înmulţirea
Înmulţirea se efectuează de obicei prin adunarea repetată a unor
produse parţiale. La înmulţirea a două cifre binare, produsul este 1
numai dacă deînmulţitul şi înmulţitorul sunt 1. În Tabelul 1.4 se prezintă
regula de înmulţire a două cifre binare x şi y.
Exemple
1.3.4. Împărţirea
Împărţirea a două numere nu se poate efectua dacă împărţitorul este
egal cu zero. Fiind dat deîmpărţitul X şi împărţitorul Y, pentru operaţia de
împărţire trebuie să se determine câtul Q şi restul R, astfel încât să fie
satisfăcută relaţia:
La împărţirea zecimală se determină cifrele câtului prin alegerea unei
cifre şi scăderea din restul parţial (care este iniţial o parte a
deîmpărţitului) a produsului dintre această cifră şi împărţitor.
Dacă rezultatul scăderii este un număr pozitiv mai mic decât împărţitorul,
cifra aleasă este corectă. În caz contrar, se alege o altă cifră şi operaţia
se repetă. În fiecare etapă a operaţiei se obţine o cifră a câtului.
În cazul împărţirii binare, dacă se alege în mod eronat o cifră a câtului, o
nouă alegere nu mai este necesară, existând numai două cifre. Operaţia
de împărţire se va reduce la o serie de scăderi ale împărţitorului din
restul parţial, care se efectuează numai dacă restul parţial este mai mare
decât împărţitorul, caz în care cifra câtului este 1; în caz contrar, cifra
corespunzătoare a câtului este 0.
Exemple
1.4. Reprezentarea numerelor în
calculator
Există mai multe forme de reprezentare a numerelor în calculator, în
funcţie de soluţia aleasă pentru a indica semnul numerelor sau poziţia
virgulei.
Numerele reprezentate în calculator pot fi fără semn sau cu semn.
Numerele fără semn sunt reprezentate în binar sau într-un cod binar
zecimal. În cazul numerelor cu semn, se utilizează o cifră de semn
pentru indicarea semnului. Convenţional, se atribuie cifra 0 pentru
semnul plus şi cifra 1 pentru semnul minus. Cifra de semn este
reprezentată pe poziţia c.m.s. a numărului. Pentru reprezentarea unui
număr binar cu semn de n cifre binare, sunt necesare deci n+1 poziţii.
În general, un număr are o parte întreagă şi o parte fracţionară, separate
prin virgula binară.
Virgula nu se reprezintă fizic, dar trebuie cunoscută localizarea ei. După
modul de amplasare a virgulei binare, există două forme de reprezentare
a numerelor:
• Forma cu virgulă fixă
• Forma cu virgulă mobilă
În forma cu virgulă fixă, virgula care separă partea întreagă de cea
fracţionară este aşezată într-o poziţie bine definită a cuvântului binar.
Există două posibilităţi de poziţionare. Dacă virgula este aşezată după
cifra de semn, se operează cu numere fracţionare, subunitare. Dacă
virgula este aşezată după cifra c.m.p.s., se operează cu numere întregi.
În continuare se presupune această poziţionare, considerând că se
lucrează cu numere întregi.
În forma cu virgulă mobilă, fiecare număr este caracterizat prin două
valori:
• Mantisa, care indică mărimea exactă a numărului într-un anumit
domeniu;
• Exponentul, care indică ordinul de mărime a numărului, fiind puterea
la care se ridică baza mantisei. Exponentul indică deci implicit poziţia
virgulei binare.
1.5. Reprezentarea numerelor în
virgulă fixă
1.5.1. Reprezentarea numerelor cu semn
În continuare se vor nota cu x, y numerele în reprezentarea binară
obişnuită, la care se ataşează semnul. Un număr cu n cifre de mărime se
va scrie sub forma:
De exemplu:
Cu X, Y se vor nota numerele în reprezentarea din calculator, care conţin şi
cifrele de semn:
După modul de exprimare a numerelor negative, există trei forme uzuale
de reprezentare a numerelor cu semn în virgulă fixă:
• În mărime şi semn (MS)
• În complement faţă de 1 (C1)
• În complement faţă de 2 (C2)
Pentru toate formele, un număr pozitiv se exprimă în acelaşi fel:
Numărul pozitiv cu semn se reprezintă deci adăugând cifra 0 de semn în
faţa numărului fără semn:
Considerăm pentru simplitate numere cu 4 biţi de mărime şi un bit de
semn. De exemplu, numărul fără semn 5 se reprezintă prin:
iar numărul cu semn +5 prin:
Cea mai simplă formă de reprezentare este cea în mărime şi semn. Un
număr negativ reprezentat în mărime şi semn are expresia:
Deci, numărul negativ se reprezintă prin adăugarea cifrei 1 de semn în
faţa numărului fără semn:
De exemplu, numărul -5 se va reprezenta prin:
Există mai multe dezavantaje ale acestei reprezentări. Primul dezavantaj
este că adunarea şi scăderea necesită circuite mai complexe. Al doilea
dezavantaj este că există două reprezentări pentru valoarea 0:
De aceea este mai dificil să se testeze dacă o valoare este 0 (o operaţie
frecventă), decât în cazul în care ar exista o singură reprezentare.
În cazul reprezentării în complement faţă de 1, un număr negativ se
reprezintă prin complementul faţă de 1 al numărului pozitiv cu aceeaşi
valoare absolută. Complementul faţă de 1 al unui număr binar se obţine
prin înlocuirea biţilor de 1 cu 0, şi a celor de 0 cu 1.
Un număr negativ reprezentat în complement faţă de 1 are expresia:
unde reprezintă complementul faţă de 1 al cifrei xi.
Complementul faţă de 1 al unui număr negativ se obţine prin
complementarea tuturor cifrelor numărului fără semn şi adăugarea cifrei
de semn 1:
De exemplu:
Există şi în acest caz două reprezentări pentru 0:
Un număr negativ reprezentat în complement faţă de 2 are
expresia:
Complementul faţă de 2 al unui număr se poate obţine în mai
multe moduri. O posibilitate o reprezintă utilizarea relaţiei de
definiţie (1.24). De exemplu, considerând n = 4, complementul
faţă de 2 al numărului –5 va fi:
O altă posibilitate este obţinerea complementului faţă de 2 în două etape:
1. Se obţine complementul faţă de 1.
2. Se consideră rezultatul ca un întreg fără semn, la care se adună valoarea.
De exemplu:
Practic, complementul faţă de 2 al unui număr se poate determina
pornind de la numărul pozitiv cu semn, astfel:
1. Se scriu cifrele numărului începând cu cifra c.m.p.s., neschimbate, până la
primul 1 inclusiv.
2. Se complementează cifrele întâlnite în continuare.
Există o singură reprezentare pentru 0 în C2. În plus, operaţiile de
adunare şi scădere se efectuează cel mai simplu în această reprezentare.
Se poate arăta că reprezentarea prin C2 conduce la aflarea valorii reale a
numărului, dacă cifra de semn se consideră negativă.
În Tabelul 1.5 se prezintă reprezentarea unor numere cu 4 biţi de mărime
şi un bit de semn în MS, C1 şi C2.
În cazul reprezentării în MS şi C1, gama numerelor care pot fi exprimate
prin n biţi de mărime este:
Pentru reprezentarea în C2, această gamă este:
De exemplu, pentru numere de un octet (7 cifre de mărime şi o cifră de
semn), gama pentru reprezentarea în MS şi C1 este:
adică:
iar în C2:
1.5.2. Reguli de deplasare ale numerelor cu
semn
De multe ori sunt necesare operaţii de deplasare a numerelor cu semn. Aceste
deplasări trebuie efectuate astfel încât să se modifice numai valoarea numerelor,
nu şi semnul. Deplasarea la stânga cu o poziţie este echivalentă înmulţirii cu 2, iar
deplasarea la dreapta este echivalentă împărţirii cu 2 (înmulţirii cu 2-1).
Pentru stabilirea regulilor de deplasare, se consideră exemplele din Tabelul 1.6.
La deplasare participă numai cifrele de mărime ale numerelor.
• În cazul deplasării numerelor pozitive, în poziţiile rămase libere după
deplasarea la stânga sau la dreapta se introduc cifre de 0.
• La numerele negative reprezentate în MS, în poziţiile rămase libere după o
deplasare la stânga sau la dreapta se introduc cifre de 0.
• La numerele negative reprezentate în C1, în poziţiile rămase libere după o
deplasare la stânga sau la dreapta se introduc cifre de 1.
• La numerele negative reprezentate în C2, în poziţiile rămase libere după o
deplasare la stânga se introduc cifre de 0, iar după o deplasare la dreapta se
introduc cifre de 1 (deci se repetă semnul numărului).
1.5.3. Operaţii cu numere reprezentate în
virgulă fixă
[Link]. Adunarea numerelor reprezentate în C2
Metodele de adunare şi scădere a numerelor reprezentate în C2
demonstrează avantajele acestei reprezentări. Aceste operaţii se pot
efectua ca şi în cazul numerelor fără semn.
Considerăm câteva exemple de adunare. În primele exemple, numerele
sunt de acelaşi semn.
Rezultatul este corect.
Se obţine un număr negativ, deci rezultatul este incorect. Deoarece +20
> 24 = 16, se depăşeşte capacitatea de reprezentare a rezultatului.
Rezultatul este corect, deoarece -14 > -24 = -16. Se obţine un număr
negativ reprezentat în C2. Apare un transport de la cifra de semn, care
se neglijează.
Rezultatul este eronat, deoarece se obţine un număr pozitiv.
În exemplele următoare, numerele sunt de semne contrare.
În cazul numerelor de semne contrare, rezultatul este întotdeauna
corect, deoarece nu poate apare depăşire de capacitate.
Din exemplele prezentate, se poate formula regula generală de adunare
a două numere reprezentate în C2.
Se adună numerele bit cu bit, inclusiv biţii de semn, care sunt trataţi la fel
cu biţii de mărime, şi se ignoră eventualul transport de la bitul de semn.
Dacă rezultatul este negativ, apare ca un număr reprezentat în C2.
Dacă rezultatul este mai mare în valoare absolută decât valoarea
maximă care poate fi reprezentată în registru, apare depăşire (exemplele
b şi d). La apariţia depăşirii, UAL trebuie să semnaleze acest fapt, astfel
încât rezultatul să nu fie utilizat.
Se observă că depăşirea poate apare indiferent dacă există sau nu
transport de la cifra de semn.
Pentru detectarea apariţiei depăşirii, se poate aplica următoarea regulă
simplă:
La adunarea a două numere de acelaşi semn, apare depăşire dacă
şi numai dacă rezultatul are semn contrar semnului numerelor.
[Link]. Scăderea numerelor reprezentate în C2
Scăderea a două numere reprezentate în C2 se poate efectua fie prin
metoda scăderii directe, dacă se dispune de scăzătoare elementare, fie
prin metoda adunării complementului faţă de 2, dacă se dispune numai
de sumatoare elementare. Se poate enunţa următoarea regulă de
scădere:
Pentru scăderea unui număr (scăzător) dintr-un altul (descăzut), se
calculează complementul faţă de 2 al scăzătorului şi se efectuează
adunarea acestuia la descăzut.
Se consideră următorul exemplu.
Regula pentru detectarea depăşirii poate fi enunţată astfel:
La scăderea a două numere de semne contrare apare depăşire dacă şi
numai dacă rezultatul are acelaşi semn cu scăzătorul.
Tema pentru acasa
3.1. Se vor converti următoarele numere zecimale în binar, octal şi hexazecimal:
a) 78; b) 125; c) 125,34; d) 12,38
3.2. Se vor converti următoarele numere binare în octal şi hexazecimal:
a) 1010101; b) 1001,011; c) 1110011,10
3.3. Se vor converti următoarele numere în binar:
a) 1258; b) ; c) 4708; d) 3E16; e) 12A16; f) 45,E116
3.4. Se vor converti următoarele numere binare în zecimal:
a) 1010101; b) 0,1101; c) 10,1011
3.5. Se vor efectua câte două exemple de adunare şi de scădere cu numere binare şi
hexazecimale.
3.6. Se vor reprezenta următoarele numere negative în MS, C2 şi C1:
a) –114; b) –53,25; c) –75,18
3.7. Se vor efectua câte două exemple de adunare şi scădere cu numerereprezentate
în C2.
3.8. Se va deduce regula de adunare a numerelor reprezentate în MS. Se vor
considera cazuri similare cu cele prezentate la adunarea numerelor în C2.
1.6 Reprezentarea numerelor în
virgulă mobilă
1.6.1. Principii de reprezentare a numerelor în
virgulă mobilă
În cazul reprezentării în forma cu virgulă fixă, poziţia virgulei, stabilită prin
proiectare, nu mai poate fi schimbată, cu toate că virgula nu mai este
reprezentată fizic în calculator. Dacă virgula este amplasată după cifra
de semn, se lucrează cu numere fracţionare subunitare. Deoarece nu
toate numerele sunt subunitare, pentru a le aduce la această formă
trebuie executate o serie de operaţii de scalare (multiplicare cu un anumit
factor de scală) sau deplasare, ataşând numerelor factori de scală.
Evidenţa acestora trebuie realizată prin program, motiv pentru care
acestea se complică.
Această dificultate se poate rezolva utilizând reprezentarea în virgulă
mobilă (virgulă flotantă). În acest caz, factorul de scală devine o parte a
cuvântului din calculator, poziţia virgulei variind pentru fiecare număr în
mod automat, ceea ce conduce la simplificarea programelor.
Un număr reprezentat în virgulă mobilă (VM) are două componente.
Prima componentă este mantisa, care indică valoarea exactă a
numărului într-un anumit domeniu, fiind reprezentată de obicei ca un
număr fracţionar cu semn. A doua componentă este exponentul, care
indică ordinul de mărime al numărului.
Considerând un număr N, reprezentarea acestuia în VM poate avea
forma următoare:
unde M este mantisa, B este baza sistemului de numeraţie, iar E este
exponentul.
Această reprezentare poate fi memorată într-un cuvânt binar cu trei
câmpuri: semnul, mantisa şi exponentul. De exemplu, presupunând un
cuvânt de 32 de biţi, o asignare posibilă a biţilor la fiecare câmp poate fi
următoarea:
Aceasta este o reprezentare în mărime şi semn, deoarece semnul are un
câmp separat faţă de restul numărului. Câmpul de semn constă dintr-un bit
care indică semnul numărului: 0 pentru un număr pozitiv şi 1 pentru un
număr negativ. Nu există un câmp rezervat pentru baza B, deoarece
această bază este implicită şi ea nu trebuie memorată, fiind aceeaşi pentru
toate numerele.
In locul exponentului se reprezintă o valoare numită caracteristică, care se
obţine prin adunarea unui deplasament la exponent, astfel încât să rezulte
întotdeauna o valoare pozitivă.
Deci, nu se rezervă un câmp separat pentru semnul exponentului.
Caracteristica C este deci exponentul deplasat:
Valoarea reală a exponentului se poate afla prin scăderea deplasamentului
din caracteristica numărului. De exemplu, dacă pentru caracteristică se
rezervă un câmp de 8 biţi, valorile caracteristicii pot fi cuprinse între 0 şi
255. Cu un deplasament de 128 (80h), exponentul poate lua valori între –
128 şi +127, fiind negativ dacă C < 128, pozitiv dacă C > 128, şi 0 dacă C
= 128. Exponentul este deci reprezentat în exces 128.
Reprezentarea cu ajutorul caracteristicii va fi următoarea:
În acest caz, semnul mantisei este acelaşi cu semnul numărului.
Unul din avantajele utilizării exponentului deplasat constă în simplificarea
operaţiilor executate cu exponentul, datorită lipsei exponenţilor negativi.
Al doilea avantaj se referă la modul de reprezentare al numărului zero.
Mantisa numărului zero are cifre de 0 în toate poziţiile. Exponentul
numărului zero poate avea, teoretic, orice valoare, rezultatul fiind tot
zero. În unele calculatoare, dacă un rezultat are mantisa zero,
exponentul este lăsat la valoarea pe care o are în momentul respectiv,
rezultând un “zero impur”.
La majoritatea calculatoarelor, se recomandă ca numărul zero să aibă
cel mai mic exponent posibil, rezultând astfel un “zero pur”. În cazul
exponenţilor nedeplasaţi, exponentul cu cea mai mică valoare este cel
mai mic număr negativ pe care îl poate avea exponentul, iar în cazul
exponenţilor deplasaţi, această valoare este 0.
Deci, prin utilizarea caracteristicii, reprezentarea în VM a numărului zero
este aceeaşi cu reprezentarea în VF, adică toate poziţiile sunt 0. Aceasta
înseamnă că se pot utiliza aceleaşi circuite pentru testarea valorii zero.
În reprezentarea anterioară, mantisa constă din 23 de biţi. Deşi virgula
binară nu este reprezentată, se presupune că ea este aşezată înaintea
bitului c.m.s. al mantisei. De exemplu, dacă B = 2, numărul 1,75 poate fi
reprezentat sub mai multe forme:
Pentru simplificarea operaţiilor cu numere în VM şi pentru creşterea
preciziei acestora, se utilizează reprezentarea sub forma normalizată. Un
număr în VM este normalizat dacă bitul c.m.s. al mantisei este 1. Din
cele două reprezentări ale numărului 1,75 ilustrate anterior, prima este
cea normalizată.
Deoarece bitul c.m.s. al unui număr normalizat în VM este întotdeauna 1,
acest bit nu este de obicei memorat, fiind un bit ascuns la dreapta
virgulei binare. Aceasta permite ca mantisa să aibă un bit semnificativ în
plus. Astfel, câmpul de 23 de biţi este utilizat pentru memorarea unei
mantise de 24 de biţi cu valori între 0,5 şi 1,0.
Cu această reprezentare, Figura 2.1 indică gama numerelor care pot fi
reprezentate într-un cuvânt de 32 de biţi.
Dacă se utilizează reprezentarea în C2, se pot reprezenta toate
numerele întregi între –231 şi 231–1, cu un total de 232 numere diferite.
Pentru formatul prezentat, se pot reprezenta numere în următoarele
domenii (Figura 2.1):
• Numere negative între –(1–2 -24) ⋅ 2127 şi –0,5 ⋅ 2-128
• Numere pozitive între 0,5 ⋅ 2-128 şi (1–2-24) ⋅ 2127
Există cinci regiuni care nu sunt cuprinse în aceste domenii:
• Numere negative mai mici decât – (1–2-24) ⋅ 2127, apariţia
acestora determinând o depăşire superioară negativă
• Numere negative mai mari decât –0,5 ⋅ 2-128, care determină o
depăşire inferioară negativă
• Zero
• Numere pozitive mai mici decât 0,5 ⋅ 2-128, care determină o
depăşire inferioară pozitivă
• Numere pozitive mai mari decât (1–2-24) ⋅ 2127, care determină
o depăşire superioară pozitivă
În unele cazuri, bitul ascuns se presupune poziţionat la stânga virgulei
binare. Astfel, mantisa memorată M va reprezenta de fapt valoarea 1,M.
În acest caz, numărul normalizat 1,75 va avea următoarea formă:
Presupunând că bitul ascuns este poziţionat la stânga virgulei binare în
formatul prezentat, un număr normalizat diferit de zero reprezintă
următoarea valoare:
unde S indică bitul de semn.
În acest format se pot reprezenta numere în următoarele domenii:
Problema care apare în cazul formatului prezentat este că nu există o
reprezentare pentru valoarea zero. Aceasta deoarece valoarea zero nu
poate fi normalizată. Totuşi, reprezentările în VM cuprind de obicei o
combinaţie specială de biţi pentru reprezentarea valorii zero.
Depăşirea superioară apare atunci când exponentul depăşeşte valoarea
maximă, de exemplu peste 127 în cazul formatului prezentat.
Depăşirea inferioară apare atunci când exponentul are o valoare
negativă prea mică, de exemplu sub –128. În cazul depăşirii inferioare,
rezultatul se poate aproxima cu 0. Coprocesoarele matematice au
anumite mecanisme pentru detectarea, semnalarea şi tratarea depăşirii
superioare şi a celei inferioare.
Pentru alegerea unui format în VM trebuie realizat un compromis între
dimensiunea mantisei şi cea a exponentului. Creşterea dimensiunii
mantisei va conduce la creşterea preciziei numerelor, iar creşterea
dimensiunii exponentului va conduce la creşterea domeniului numerelor
care pot fi reprezentate.
Singura cale de a creşte atât precizia, cât şi domeniul numerelor, este de
a utiliza un număr mai mare de biţi pentru reprezentare. Cele mai multe
calculatoare utilizează cel puţin două formate, în simplă precizie (de
exemplu pe 32 de biţi), şi dublă precizie (de exemplu pe 64 de biţi).
1.6.2. Reprezentarea numerelor în formatul
IEEE 754
IEEE (Institute of Electrical and Electronics Engineers) a dezvoltat un
standard pentru reprezentarea numerelor în VM şi operaţiile aritmetice în
această reprezentare. Scopul era facilitarea portabilităţii programelor
între diferite calculatoare. Standardul IEEE 754 a fost publicat în 1985.
Cele mai multe coprocesoare aritmetice, printre care şi cele Intel pentru
familia de microprocesoare 80x86, se conformează acestui standard.
Standardul defineşte trei formate:
• Formatul scurt (precizie simplă): 4 octeţi
• Formatul lung (precizie dublă): 8 octeţi
• Formatul temporar (precizie extinsă): 10 octeţi
Baza implicită este 2.
Formatul scurt şi cel lung sunt prezentate în continuare.
S indică semnul numărului. C reprezintă exponentul deplasat, deci
caracteristica, pentru care se rezervă 8 biţi în formatul scurt şi 11 biţi în
formatul lung. Pentru formatul scurt, deplasamentul este 127 (7Fh), iar
pentru formatul lung deplasamentul este 1023 (3FFh). Valorile minime
(0) şi cele maxime (255, respectiv 2047) ale caracteristicii nu sunt
utilizate pentru numerele normalizate, ele având utilizări speciale.
Bitul ascuns este utilizat şi la standardul IEEE 754, dar mantisa este
reprezentată într-un mod diferit. Ea constă dintr-un bit implicit cu
valoarea 1 (partea întreagă), virgula binară implicită, şi apoi cei 23,
respectiv 52 de biţi ai fracţiei. Dacă toţi biţii fracţiei sunt 0, mantisa este
1,0; dacă toţi biţii fracţiei sunt 1, mantisa este cu puţin mai mică decât
2,0. Deci:
Mantisa are valoarea:
iar valoarea numărului în precizie simplă (NS), respectiv în precizie dublă
(ND) este:
Gama numerelor care pot fi reprezentate în precizie simplă este cuprinsă
între aproximativ şi , iar cea a numerelor reprezentate în
precizie dublă este cuprinsă între şi .
Formatul temporar este utilizat pentru reprezentarea numerelor în cadrul
coprocesoarelor aritmetice, în scopul reducerii erorilor datorate
rotunjirilor. Acest format este următorul:
Bitul 63 reprezintă partea întreagă a mantisei, care nu este
implicită. Numerele în formatul temporar nu sunt întotdeauna
normalizate, de aceea nu încep în mod obligatoriu cu un bit de 1.
De aceea acest bit este reprezentat explicit, fiind notat cu I în
cadrul formatului. Deplasamentul exponentului este 16.383, iar
valoarea numărului (NE) este:
Una din problemele care apare la calculele cu numere în VM se
referă la modul de tratare al depăşirilor inferioare şi superioare, şi
la reprezentarea valorilor nedefinite. În acest scop, pe lângă
numerele normalizate, standardul mai permite şi reprezentări ale
unor valori speciale, pentru care sunt rezervate valorile 0 şi 255
ale exponentului. Unele din aceste valori speciale sunt prezentate
în continuare.
În cazul obţinerii unui rezultat cu o valoare mai mică decât numărul
normalizat cel mai mic posibil, în mod obişnuit rezultatul este setat la
zero şi operaţiile se continuă, sau se semnalează o eroare de depăşire
inferioară. Nici una din aceste soluţii nu este satisfăcătoare, astfel încât
standardul permite utilizarea numerelor nenormalizate (denormalizate),
care au caracteristica 0, iar fracţia diferită de 0.
Pentru valoarea zero, atât caracteristica, cât şi fracţia, sunt egale cu 0.
Există două reprezentări pentru valoarea 0, în funcţie de bitul de semn:
+0, respectiv -0. Bitul de la stânga punctului binar este implicit 0 în loc de
1.
Pentru cazul în care apare o depăşire superioară, există o reprezentare
specială pentru infinit, constând din caracteristica formată din biţi de 1
(255 pentru formatul scurt), şi o fracţie egală cu 0.
Valoarea infinit se poate utiliza ca operand, de exemplu:
Astfel, utilizatorul poate decide dacă va trata depăşirea superioară ca o
condiţie de eroare, sau va continua calculele cu valoarea infinit.
Pentru indicarea diferitelor condiţii de excepţie, ca în cazul nedefinirilor
de forma ∞/∞, ∞ ∗ 0, 0/∞, s-a prevăzut un format special NaN (Not a
Number). Caracteristica este formată din biţi de 1, iar fracţia este diferită
de 0.
Exemple
1) Care este reprezentarea binară a numărului –0,75 în simplă precizie?
1.7. Coduri binar-zecimale
2) Care este numărul zecimal reprezentat de următorul cuvânt?
1.7. Coduri binar-zecimale
Aceste coduri se utilizează pentru codificarea cifrelor zecimale. Pentru
codificarea fiecăreia din cele 10 cifre, sunt necesari 4 biţi; din cele 16
valori posibile, 6 vor fi neutilizate. Prin stabilirea unor corespondenţe
între mulţimea cifrelor zecimale şi mulţimea celor 16 cuvinte de 4 biţi, se
obţin numeroase posibilităţi de codificare . Din numeroasele coduri
posibile se utilizează practic doar o mică parte.
Codurile utilizate se împart în coduri ponderate şi neponderate.
În cazul codurilor ponderate, o cifră zecimală este exprimată printr-o
combinaţie de 4 cifre binare, în care fiecărei cifre i se asociază o anumită
pondere. Ponderile pot fi pozitive sau negative.
Valoarea cifrei zecimale se obţine prin suma biţilor din cod, fiecare bit
fiind multiplicat cu valoarea ponderii asociate.
Considerând un cod format din biţii b0, b1, b2, b3, ponderile asociate
acestora fiind p0, p1, p2, respectiv p3, valoarea cifrei zecimale codificate
este:
Ponderile fiecărui bit reprezintă valoarea corespunzătoare din denumirea
codului. Pentru ponderile de sus, codul are denumirea p3p2p1p0.
În Tabelul 2.1 se prezintă exemple de coduri ponderate de 4 biţi mai des
utilizate.
Exemple
În cazul codului 8421, deoarece fiecare bit are ponderea numărării în
binar (20, 21, 22, 23), iar cuvintele de cod reprezintă numerele succesive
în sistemul binar natural, codul se mai numeşte cod binar-zecimal natural
(NBCD – Natural Binary Coded Decimal). În mod obişnuit, acest cod se
numeşte, impropriu, cod BCD.
În cazul codului 2421, numit şi cod Aiken (după numele prof. Howard
Aiken, care a realizat calculatorul MARK I), primele 5 cifre zecimale (0 –
4) au aceeaşi exprimare ca şi în codul 8421. Cifra zecimală 5 poate fi
exprimată fie prin 0101, fie prin 1011. Deci, reprezentarea unor cifre
zecimale nu este unică, această proprietate fiind valabilă şi pentru alte
coduri. Pentru codificare s-a ales reprezentarea 1011, deoarece codul
pentru cifra 5 se poate obţine atunci prin complementarea codului pentru
cifra 4. Aceeaşi regulă se poate aplica pentru obţinerea codului cifrei 6
din codul cifrei 3, a codului cifrei 7 din codul cifrei 2 etc.
Codurile care au această proprietate se numesc coduri
autocomplementare. Un cod este autocomplementar dacă cuvântul de
cod al complementului faţă de 9 al cifrei N (deci 9 – N) se poate obţine
din codul cifrei N, prin complementarea fiecăruia din cei 4 biţi. De
exemplu, codul 8421 nu este autocomplementar, iar codurile
sunt autocomplementare.
Condiţia necesară pentru ca un cod ponderat să fie autocomplementar
este ca suma ponderilor să fie egală cu 9. Autocomplementaritatea
constituie un avantaj în construcţia unui dispozitiv aritmetic care lucrează
cu numere zecimale reprezentate în codul respectiv.
Observaţie. În forma internă, numerele sunt reprezentate şi prelucrate
fie sub formă binară, fie codificate printr-un cod binar-zecimal. Trebuie
sesizată diferenţa dintre conversia unui număr zecimal în echivalentul
său binar şi codificarea binar-zecimală a numărului zecimal. De exemplu:
Codurile neponderate pot avea un număr mai mare de 4 biţi. Codurile
cele mai uzuale sunt prezentate în Tabelul 2.2.
Codul Exces 3 este autocomplementar, şi derivă din codul 8421 (BCD)
prin adăugarea la fiecare cifră a valorii 3. Utilizând acest cod, se poate
face distincţie între lipsa unei informaţii înscrise într-un registru sau
locaţie de memorie şi înscrierea valorii zero (0000 reprezintă lipsa unei
informaţii, iar zero este codificat prin 0011).
Codul 2 din 5 se utilizează pentru reprezentarea numerelor zecimale
printr-un grup de 5 biţi. Denumirea derivă din faptul că fiecare cifră
zecimală codificată în binar conţine doi biţi de 1 din cei 5 biţi.
Codul Gray are proprietatea de adiacenţă, adică trecerea de la o cifră
zecimală la următoarea sau precedenta necesită modificarea unui singur
bit din cuvântul de cod. Este util pentru mărimile care cresc sau descresc
succesiv.
1.8. Coduri detectoare de erori
Transmiterea informaţiilor prin medii influenţate de zgomote
poate fi însoţită de introducerea unor erori. Verificarea transmiterii
corecte a informaţiilor se poate realiza cu ajutorul unor coduri
speciale numite coduri detectoare de erori.
Una din metodele de detectare a unei erori o constituie
detectarea combinaţiilor interzise. În cazul codurilor binar-
zecimale, deoarece se utilizează 10 din cele 16 combinaţii
posibile de 4 biţi, celelalte combinaţii nu trebuie să apară. Aceste
combinaţii interzise se pot utiliza pentru detectarea erorii.
Dacă, de exemplu, în codul BCD 1000 apare o singură eroare,
codul poate fi transformat în 0000, 1100, 1010 sau 1001. Dintre
aceste combinaţii, a doua şi a treia constituie combinaţii interzise,
astfel încât în aceste cazuri eroarea poate fi detectată. Celelalte
combinaţii nu sunt interzise, deci în cazurile respective eroarea
nu poate fi detectată.
O modalitate de creştere a probabilităţii de detectare a erorilor constă în
folosirea mai multor combinaţii interzise, care pot fi disponibile dacă
codurile au mai mult de 4 biţi. De exemplu, în codul 2 din 5 apare o
eroare ori de câte ori o cifră codificată are mai mult sau mai puţin de doi
biţi de 1. Astfel, se pot detecta erori multiple.
O altă metodă pentru detectarea erorilor constă în folosirea unor biţi
suplimentari de verificare. De exemplu, un cod de n biţi poate fi format
din m biţi de date şi r biţi redundanţi de verificare (n = m + r). Fiind date
două cuvinte de cod, de exemplu 1000 1001 şi 1011 0001, se poate
determina numărul biţilor care diferă. În acest caz, există 3 biţi care
diferă. Pentru determinarea numărului de biţi care diferă, se efectuează
suma modulo 2 între cele două cuvinte de cod, şi se calculează numărul
biţilor de 1 ai rezultatului. Numărul poziţiilor în care două cuvinte de cod
diferă reprezintă distanţa Hamming. Dacă între două cuvinte de cod se
află o distanţă Hamming d, sunt necesare d erori de câte un singur bit
pentru trecerea de la un cod la al doilea cod.
Proprietăţile de detectare a erorilor ale unui cod depind de distanţa sa
Hamming. Pentru detectarea a d erori de câte un singur bit, este necesar
un cod cu distanţa d+1, deoarece cu un asemenea cod nu există
posibilitatea ca d erori de un singur bit să modifice un cuvânt de cod valid
într-un alt cuvânt de cod valid.
Un exemplu simplu de cod detector de erori este un cod care conţine un
bit suplimentar numit bit de paritate. Acest bit se poate alege astfel încât
numărul total al biţilor având valoarea 1 în exprimarea numărului să fie
par, respectiv impar. Dacă se utilizează paritatea pară, notând cu
x3x2x1x0 biţii cifrei zecimale şi cu p bitul de paritate, valoarea bitului de
paritate determină ca suma modulo 2 a valorii tuturor biţilor să fie 0:
de unde rezultă:
Dacă se alege paritatea impară, trebuie ca:
sau
Un asemenea cod are distanţa 2, deoarece o eroare de un singur bit
produce un cuvânt de cod cu paritatea eronată. La transmisia datelor se
adaugă bitul de paritate pară sau impară, iar la recepţie se determină
dacă paritatea este aceeaşi cu cea de la transmisie.
Codurile 8421 cu paritate pară ale cifrelor zecimale sunt indicate în
Tabelul 2.3.
1.9. Coduri corectoare de erori
Verificarea parităţii nu poate detecta apariţia erorilor duble, deoarece
aceste erori nu modifică suma modulo 2 a biţilor. Există coduri mai
complexe, numite coduri corectoare de erori, care permit şi corectarea
unui bit eronat sau a mai multor biţi eronaţi. Aceste coduri sunt utile
atunci când retransmisia informaţiei nu este posibilă, sau necesită un
timp care nu ar fi acceptabil.
Presupunem un cod cu m biţi de date şi r biţi de verificare, cod care
permite corectarea tuturor erorilor de un singur bit. Fiecăruia din cele 2m
cuvinte de cod valide îi corespund n cuvinte de cod ilegale cu distanţa 1.
Acestea se formează prin inversarea sistematică a fiecăruia din cei n biţi.
Fiecare din cele 2m cuvinte valide necesită n+1 combinaţii de biţi
dedicate pentru cuvântul respectiv. Deoarece numărul total al
combinaţiilor de biţi este 2n, trebuie ca (n+1)2m ≤ 2n. Utilizând relaţia n =
m + r, această cerinţă devine (m + r + 1) ≤ 2r. Fiind dat m, aceasta
impune o limită inferioară asupra numărului biţilor de verificare necesari
pentru corectarea erorilor de un singur bit. De exemplu, pentru un cuvânt
de m = 4 biţi, numărul minim al biţilor de verificare este r = 3, iar pentru
un cuvânt de m = 8 biţi, numărul minim al biţilor de verificare este r = 4.
.
Aceste limite teoretice pot fi atinse utilizând o metodă datorată lui
Richard Hamming. Metoda poate fi utilizată pentru construirea codurilor
corectoare de erori pentru cuvinte de cod de orice dimensiune. Într-un
cod Hamming, se adaugă r biţi de paritate la un cuvânt de m biţi,
rezultând un nou cuvânt cu lungimea de m + r biţi. Biţii sunt numerotaţi
începând cu 1 (şi nu cu 0), bitul 1 fiind bitul c.m.s. Toţi biţii ai căror număr
este o putere a lui 2 sunt biţi de paritate, restul biţilor fiind utilizaţi pentru
date. De exemplu, în cazul unui cuvânt de 4 biţi, biţii 1, 2 şi 4 sunt biţi de
paritate. În total, cuvântul de cod va conţine 7 biţi (4 de date şi 3 de
paritate). În exemplul prezentat se va utiliza în mod arbitrar paritatea
pară.
Fiecare bit de paritate verifică anumite poziţii de biţi. Aceste poziţii sunt
ilustrate în Figura 2.2, unde prin pătrate s-a indicat poziţia biţilor de
paritate, iar prin cercuri s-a indicat poziţia biţilor de informaţie.
Figura 2.2. Construcţia codului Hamming pentru valoarea binară
0101 prin adăugarea a trei biţi de paritate.
Poziţiile de biţi verificate de biţii de paritate sunt următoarele:
Bitul 1 de paritate verifică biţii 1, 3, 5, 7.
Bitul 2 de paritate verifică biţii 2, 3, 6, 7.
Bitul 4 de paritate verifică biţii 4, 5, 6, 7.
În general, bitul b este verificat de acei biţi b1, b2, …, bj astfel încât b1 + b2
+ … + bj = b. De exemplu, bitul 5 este verificat de biţii 1 şi 4 deoarece 1 +
4 = 5. Bitul 6 este verificat de biţii 2 şi 4 deoarece 2 + 4 = 6.
Se consideră exprimarea în cod 8421 a cifrei zecimale 5 (0101). Bitul 1
de paritate va trebui să determine un număr par de cifre de 1 pentru
poziţiile 1, 3, 5 şi 7, deci va avea valoarea 0. Similar se determină
valoarea bitului 2 de paritate, care va avea valoarea 1, şi a bitului 4 de
paritate, care va avea valoarea 0.
Dacă transmiterea cifrei zecimale se realizează corect, toţi biţii de
paritate verifică în mod corect paritatea. Dacă apare o eroare de
transmisie, fie la un bit de paritate, fie la un bit de informaţie, acest cod
poate corecta o singură eroare.
De exemplu, presupunem că a apărut o eroare la transmiterea bitului de
informaţie din poziţia 6. Codul recepţionat va fi 0100111 în loc de 0100101.
Se verifică biţii de paritate, cu următoarele rezultate.
Bitul 1 de paritate este corect (biţii 1, 3, 5, 7 conţin doi biţi de 1)
Bitul 2 de paritate este incorect (biţii 2, 3, 6, 7 conţin trei biţi de 1)
Bitul 4 de paritate este incorect (biţii 4, 5, 6, 7 conţin trei biţi de 1).
Bitul incorect trebuie să fie unul din biţii testaţi de bitul 2 de paritate (2, 3, 6
sau 7). Deoarece bitul 4 de paritate este incorect, unul din biţii 4, 5, 6 sau 7
este incorect. Bitul eronat este unul din cei care se află în ambele liste, deci
poate fi bitul 6 sau 7. Bitul 1 de paritate fiind corect, rezultă că şi bitul 7
este corect. Bitul eronat este deci bitul 6, şi valoarea acestui bit trebuie
inversată. În acest fel, eroarea poate fi corectată.
O metodă simplă pentru determinarea bitului eronat este următoarea. Se
calculează biţii de paritate, şi dacă toţi biţii sunt corecţi, înseamnă că nu
există eroare (sau există mai mult de o eroare).
Se atribuie apoi biţilor de paritate ponderile 1, 2, respectiv 4, şi se adună
ponderile biţilor de paritate eronaţi. Suma rezultată reprezintă poziţia bitului
eronat. De exemplu, dacă biţii de paritate 2 şi 4 sunt eronaţi, bitul eronat
este bitul 6.
1.10. Coduri alfanumerice
Datele alfanumerice conţin cifre, litere şi semne speciale, numite, în
general, caractere. Codurile care pot reprezenta asemenea caractere se
numesc coduri alfanumerice.
1.10.1. ASCII
Un cod alfanumeric foarte des utilizat este codul ASCII (American
Standard Code for Information Interchange), care codifică literele mari şi
mici ale alfabetului englez, cifrele zecimale, semnele de punctuaţie şi alte
caractere speciale. Codul ASCII utilizează 7 biţi pentru a codifica 128 de
caractere. Din cele 128 de caractere, 94 sunt caractere care pot fi
tipărite, iar 34 sunt caractere utilizate pentru diferite funcţii de control.
În Tabelul 2.4 se prezintă codurile ASCII. Cei 7 biţi ai codului sunt notaţi
cu b0 până la b7, b7 fiind bitul c.m.s. De notat că cei trei biţi mai
semnificativi ai codului determină coloana din tabelă, iar cei patru biţi mai
puţin semnificativi determină linia din tabelă. De exemplu, litera A este
reprezentată în ASCII prin codul binar 100 0001 (coloana 100, linia
0001).
Cele 34 de caractere de control sunt desemnate în tabelul caracterelor
ASCII prin nume abreviate. Caracterele de control se utilizează pentru
transmisia datelor şi pentru aranjarea textului într-un anumit format.
Există trei tipuri de caractere de control:
de formatare,
de separare a informaţiei, şi
de control al comunicaţiei.
Dintre caracterele de formatare a textului menţionăm cele pentru
deplasare înapoi BS (Backspace), retur de car CR (Carriage Return) şi
tabulare orizontală HT (Horizontal Tabulation).
Separatorii de informaţii se utilizează pentru separarea datelor în
secţiuni, de exemplu în paragrafe şi pagini. Acestea cuprind caractere
cum sunt separatorul de înregistrare RS (Record Separator) şi
separatorul de fişier FS (File Separator). Caracterele de control al
comunicaţiei se utilizează la transmisia textului.
Exemple de asemenea caractere sunt STX (Start of Text) şi ETX (End of
Text), care se pot utiliza pentru încadrarea unui mesaj transmis pe liniile
de comunicaţie.
Tema de casa
3.1. Reprezentaţi în formatul IEEE 754 cu precizie simplă următoarele numere zecimale:
a) 1; b) –1; c) 5; d) –5; e) 35,4; f) –35,4; g) 2,6; h) -192. Scrieţi rezultatele în hexazecimal.
3.2. Reprezentaţi în formatul IEEE 754 cu precizie dublă următoarele numere zecimale:
a) 1; b) 1,5; c) 2,5; d) 5; e) 35,4; f) –35,4
3.3. Scrieţi numerele zecimale corespunzătoare următoarelor reprezentări în formatul IEEE 754
cu precizie simplă:
a) 41 8A 1E 94; b) 41 36 66 6A; c) BE CC CC CB; d) BD AB 40 C0
3.4. Deduceţi algoritmii pentru adunarea şi scăderea a două cifre zecimale exprimate în codul
8421. Pentru deducerea algoritmului de adunare se va întocmi un tabel cu toate sumele
posibile care se pot obţine prin adunarea a două cifre zecimale şi a unui eventual transport,
indicând pentru fiecare din acestea suma corectă. Similar se va proceda pentru scădere,
ţinând cont şi de un eventual împrumut.
3.5. Deduceţi algoritmii pentru adunarea şi scăderea a două cifre zecimale exprimate în codul
Exces 3.
3.6. Deduceţi algoritmii pentru conversia din binar în codul Gray şi din codul Gray în binar.
3.7. Construiţi codul Hamming pentru un cuvânt de 16 biţi, considerând paritatea impară. Explicaţi
modul în care funcţionează corecţia unei erori.
3.8. Deduceţi regula de conversie a literelor mari codificate în ASCII în litere mici, şi a literelor
mici în litere mari.