Extras din curs
Sistemele de calcul au evoluat continuu, iar aceasta evolutie continua sa ne uimeasca. Materialul urmator încearca sa capteze atât bazele matematice ale sistemelor de calcul (utile oricarui programator), cât si sa prezinte o radiografie a principalelor concepte interesante atât pentru utilizatori cât si pentru programatori. Pare surprinzator ca se acorda importanta majora bazelor de numeratie si functiilor booleene, dar orice utilizator/programator, mai devreme sau mai târziu, va avea nevoie de acestea. Stabilirea culorilor în realizarea paginilor HTML necesita cunoasterea sistemului hexazecimal, cautarea de informatie folosind motorul Google necesita utilizarea cuvintelor AND, OR etc. (deci a operatiilor logice). Sistemele de calcul au fost proiectate, initial, pentru calcule stiintifice. Ori, reprezentarea IEEE 754 este doar unul dintre modelele de reprezentare a numerelor reale.
Daca vrem sa programam eficient trebuie sa simplificam expresiile logice, sa întelegem modul de functionare a unui sistem de calcul particular. Iata, de ce este important sa extindeti cunoasterea dincolo de acest material. Resursele bibliografice si notele de subsol va dau doar câteva directii.
Partea a treia este doar pentru utilizatori, dar un programator are nevoie sa cunoasca mult mai mult decât ofera prezentul material. Veti spune ca nu este nevoie de UNIX pentru ca Windows este sistemul de operare preferat. Nici o problema! Mai devreme sau mai târziu veti avea ocazia sa utilizati si alte sisteme de calcul decât calculatoarele personale. Veti fi surprinsi sa aflati cât de multe tipuri de sisteme de calcul / operare exista.
Calculatorul MMIX este, deocamdata, unul virtual. Dar câte experimente se pot face. Aici puteti întelege, ca înainte de a avea un calculator pentru asamblat, acesta este proiectat (functionarea acestuia fiind simulata pe alte sisteme existente deja), simulat, fabricat, testat si apoi multiplicat (eventual în clone precum calculatoarele IBM/PC).
Prezentul material este structurat în patru parti. Prima parte se ocupa de modalitati de reprezentare a datelor în sistemele de calcul. Atât pentru numere naturale, numere întregi cât si pentru numere rationale, sistemul binar se impune. Programatorii au nevoie, însa, si de sistemele hexazecimal sau octal. Complementul fata de doi, reprezentarea IEEE 754 nu trebuie sa lipseasca din pregatirea informaticienilor. Ele va permit sa întelegeti tipurile de date cu care opereaza limbajele de programare (inclusiv cele care manipuleaza obiecte) precum si operatiile cu aceste date. Capitolul al doilea, aparent teoretic, are aplicatii majore în proiectarea sistemelor digitale si a optimizarii calcului. Sectiunea 3.1.7 reprezinta doar o introducere.
Sectiunea a treia este un sumar al tuturor componentelor unui sistem de calcul. El poate fi oricând extins în functie de noile tehnologii informationale. Au fost introduse modurile de utilizare UNIX/Windows pentru ca acestea domina piata actuala. Aceasta nu face ca cel care parcurge materialul sa nu se poata descurca si cu alte sisteme de calcul.
Experienta de utilizare / programare se poate îmbunatatii numai prin exercitiu, prin experiment. Instructiunile INTEL pot fi analizate folosind DEBUG (comanda externa a oricarui sistem Microsoft), comenzile externe Windows pot fi studiate folosind Windows NT/2000/XP în mod text, iar comenzile UNIX prezentate pot fi experimentate cu orice versiune de Linux. Eventuale resurse necesare experimentarii MMIX pot fi obtinute folosind referintele mentionate în text.
Bibliografia este minimala, ea poate fi completata cu alte referinte si va fi permanent actualizata. Sistemele de calcul evolueaza permanent. Este o realitate!
1
1. BAZELE ARITMETICE ALE SISTEMELOR DE CALCUL
1.1. Sisteme de numeratie
Pentru prelucrarea datelor, omul lucreaza în sistemul de numeratie zecimal, folosind cele 10 simboluri: 0, 1, 2, ..., 9, numite cifre (eng. digits).
Pentru domeniul sistemelor de calcul digitale1, cele mai importante sisteme de numeratie sunt: binar, octal si hexazecimal. Sistemul binar foloseste baza de numeratie 2 (0 + 1 = 1 + 0 = 1; 0 + 0 = 0; 1 + 1 = (10)2 = 2 (în baza 10); 0 x 0 = 1 x 0 = 0 x 1 = 0, 1 x 1 = 1). Sistemul octal, cu baza opt, foloseste simbolurile: 0, 1, ..., 7. Baza de numeratie a sistemului hexazecimal este 16, iar simbolurile folosite sunt: 0, 1, ..., 9, a, b, c, d, e, f. Se pot utiliza – prin corespondenta biunivoca - si simbolurile A, B, C, D, E, F cu semnificatia simbolurilor a, b, c, d, e, f.
Datorita modului pozitional, de lucru, indiferent de sistemul de numeratie utilizat, realizarea operatiilor aritmetice urmeaza acelasi algoritm2 (de exemplu, la adunare se face transport de la ordinul curent la ordinul imediat superior.
Procesul privind transformarea reprezentarilor exprimate în sisteme de numeratie se numeste conversie. Referitor la sistemele de numeratie, descriem câteva metode de conversie si algoritmii de calcul corespunzatori3.
Codificarea unui numar real într-o baza de numeratie b (b e 2), se bazeaza pe operatiile de împartire si înmultire aplicate numerelor întregi. Pentru a converti un numar real format din parte întreaga si parte fractionara, din scrierea zecimala, în baza b (b e 2), se procedeaza astfel:
1. se împarte (conform teoremei împartirii cu rest4) la b, partea întreaga si câturile obtinute dupa fiecare împartire, pâna se obtine câtul zero. Rezultatul conversiei este constituit din resturile obtinute, luate în ordine inversa aparitiei acestora.
2. se înmulteste cu b, partea fractionara5 si toate partile fractionare obtinute din produsul anterior, pâna când partea fractionara este nula sau a fost obtinut numarul de cifre dorit. Rezultatul conversiei partii fractionare este constituit din partile întregi6 ale produselor, luate în ordinea aparitiei.
Preview document
Conținut arhivă zip
- Arhitectura Sistemelor de Calcul.pdf