454
Arhitectura sistemelor de calcul Curs Dr˘ agulici Dumitru Daniel Facultatea de matematic˘ si informatic˘ a, Universitatea Bucure¸ sti 2014

Asc Curs 14ian2015

Embed Size (px)

DESCRIPTION

arhitectura sistemelor de calcul, drăgulici

Citation preview

  • Arhitectura sistemelor de calculCurs

    Dragulici Dumitru Daniel

    Facultatea de matematica si informatica,Universitatea Bucuresti

    2014

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Bibliografie:

    John L. Hennessy, David A. Patterson:Organizarea si proiectarea calculatoarelor - interfata hardware/software,Ed. All, 2002

    Adrian Atanasiu:Arhitectura calculatorului,Ed. InfoData, 2006

    Materialele de laborator (pentru limbajul MIPS)

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Conceptul de performanta

    Performanta poate avea mai multe acceptiuni:(1) la un PC, suntem interesati de timpul de raspuns al unui program:este timpul fizic scurs ntre momentul cand lansam cererea si momentul candprimim rezultatul; el trebuie sa fie cat mai mic;(2) la un centru de calcul, suntem interesati de productivitate (throughput):numarul de sarcini executate n unitatea de timp; el trebuie sa fie cat mai mare.

    Obs: (1) = (2) dar (2) 6= (1).De exemplu, centrul de calcul poate avea calculatoare lente dar multe; atuncipe fiecare calculator vom avea timpi de raspuns mari, dar numarul de sarciniexecutate n unitatea de timp n centrul de calcul va fi tot mare.

    Ambele acceptiuni ale performantei necesita abordari complexe, asa ca pentrusimplitate trebuie sa ne limitam la una din ele.

    In cele ce urmeaza, performanta se va referi la timpul de raspuns.El priveste rularea unui program cu niste date si depinde de mai multi factori:codul programului, datele cu care se ruleaza, promptitudinea cu care utilizatorulintroduce datele cand sunt cerute, sistemul de operare, ncarcarea sistemului(activitatea concomitenta a altor utilizatori), arhitectura hardware, etc.

  • Conceptul de performanta

    Pentru a da o dimensiune numerica performantei (P) si a descrie dependentaei descrescatoare n raport cu timpul de raspuns (T ), adoptam formula:

    P =1

    T(1)

    Deja putem sa comparam performantele sau sa calculam un raport al

    performantelor unui program cu niste date fixate, pe doua masini X si Y :

    PX > PYdef TX < TY , PX

    PY= n

    def TYTX

    = n (2)

    (am notat cu PX , PY , TX , TY , performantele respectiv timpii deraspuns, pe masinile X si Y ).

  • Conceptul de performanta

    Timpul de raspuns (al unui program cu niste date) are urmatoarelecomponente:(1) Timpul consumat cu executarea unor operatii din program;(2) Timpul consumat cu executarea unor operatii din sistemul de operare, darlegate de programul nostru (ex: apeluri sistem cerute de program);(3) Timpul consumat de program n asteaptarea unor evenimente/resurse (ex:programul este adormit n scanf() asteptand ca utilizatorul sa introduca datede la consola);(4) Timpul n care programul este suspendat de sistemul de operare, pentru aexecuta operatii adminstrative si sarcini legate de alte programe (care ruleazan paralel cu al nostru).

    Notam (1) + (2) = Timpul CPU

    Deci timpul CPU este timpul consumat de program cu executarea unor operatii(calcule), fie ele din program sau din sistemul de operare dar legate deprogram. El este inclus n timpul de raspuns, iar ceea ce ramane este timpulconsumat de program n asteptare, fie ca asteapta un eveniment/resursa, fie caeste suspendat de sistemul de operare pentru a executa operatii adminstrativesi sarcini legate de alte programe.

  • Conceptul de performantaPe anumite sisteme exista comenzi cu ajutorul carora se pot masura si afisadiferite componente ale timpului de raspuns pentru o anumita cerere. Deexemplu, n Linux comanda:

    time cmdafisaza diferite componente ale timpului de raspuns obtinute la executarea

    comenzii cmd . De exemplu, poate afisa:

    real 2m39.000s (timpul de raspuns)user 1m30.700s (timpul utilizator, (1))sys 0m12.900s (timpul sistem, (2))

    Astfel, putem calcula procentajul timpului CPU din timpul de raspuns:

    90.7s + 12.9s

    159s= 65%

    Deci > 1/3 din timpul de raspuns a fost consumat n asteptare, ceea ce nespune ceva despre mediul n care a fost rulat programul - resurse greudisponibile, grad mare de ncarcare a sistemului, etc.

  • Conceptul de performanta

    Distingem ntre:performanta sistemului = timpul de raspuns pe un sistem nencarcat;performanta CPU = timpul CPU.

    In cele ce urmeaza restrangem si mai mult domeniul abordarii si vom consideraca performanta nseamna performanta CPU (deci n formula (1) este vorbade timpul CPU).

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Masurarea performantei

    Timpul (CPU) se poate masura n: secunde (s) cicli de ceas (c)

    Legatura dintre cele doua este data de peroada de ceas (durata ciclului) D(masurata n secunde (s), nanosecunde (ns), etc.) sau frecventa F (masuratan herzi (Hz), megaherzi (MHz), etc.), dupa formula:

    F =1

    DCand masuram n cicli nu mai conteaza fizica circuitelor (durata ciclului) cidoar mpartirea programului n operatii masina (logica programului) si aoperatiilor masina n ciclii (logica circuitelor) - avem astfel posibilitatea sacomparam d.p.v. logic o gama mai larga de masini.

  • Masurarea performanteiO marime care ne da indicatii asupra performantei este numarul total de cicli

    executati C .El depinde de program, de date si de mpartirea instructiunilor n cicli (ampresupus programul scris n limbaj masina); nu depinde de durata ciclului.

    Performanta este cu atat mai mare cu cat C este mai mic.Daca presupunem programul scris ntr-un limbaj de nivel nalt, conteaza simpartirea codului sursa n instructiuni masina - deci intervine si performantacompilatorului.

    Atunci putem calcula timpul CPU T dupa formula:

    T = C D = CF

    (3)

    Aceasta formula arata ca putem reduce timpul T (deci mari performanta)reducand numarul de cicli executatiC sau/si durata ciclului D .Este dificil nsa de redus simultan ambii factori - de obicei reducera unuiaatrage cresterea celuilalt.

  • Masurarea performanteiPentru exemplificare, sa consideram urmatorul model simplificat de circuit, careexecuta cate o operatie la fiecare ciclu:

    W

    H

    CKEl este construit prin conectarea altor circuite mai simple, n serie, n paralel,etc. (a se vedea capitolul de circuite logice), are o anumita latime w , data denumarul de intrari si de conectari n paralel, si o anumita naltime H , data denumarul de niveluri de conectare n serie; W este cu atat mai mare cu catdatele de prelucrat au o dimensiune mai mare (mai multi biti), iar H este cuatat mai mare cu cat operatia este mai complexa.

    La fiecare tact de ceas (CK ), datele de intrare sunt prelucrate prin circuit sitransformate n niste date de iesire, care la urmatorul tact vor fi preluate cadate intrare de un circuit conectat n continuare. Aceasta prelucrare necesita

    un anumit timp, iar D trebuie sa fie acest timp - altfel, daca urmatorultact vine prea devreme (nainte ca iesirile sa fie stabile), vor fi culese (si trimisemai departe) niste date eronate.

  • Masurarea performantei

    Cresterea D nu este influientata de W , deoarece intrarile sunt procesate nparalel, ci de H (lungimea traseelor ce trebuie parcurse); n capitolul decircuite logice vom vedea, de exemplu, ca o adunare pe 32 biti se face la fel derepede ca o adunare pe 64 biti (deoarece bitii operanzilor sunt procesati nparalel), dar o adunare se face mai repede decat o nmultire.

    Sa consideram acum ca circuitul desenat mai sus executa o operatie peparcursul mai multor cicli - deci sunt necesare mai multe treceri prin el pentru ase efectua toate prelucrarile necesare.Intrucat efectuarea unei anumite operatii necesita o anumita cantitate deprelucrari (care depinde de natura matematica a operatiei), proiectantulcircuitului va avea de ales ntre doua variante:

    - va mparti prelucrarea n etape putine, realizate cate una la ficare ciclu, dar

    atunci la fiecare etapa trebuie facute calcule multe, deci H va fi mare si astfelD va fi mare; atunci, la executarea programului vom avea C mic si D mare;- va mparti prelucrarea n etape multe si atunci la fiecare etapa trebuie facute

    calcule putine, deci H si D vor fi mici; atunci, la executarea programului vomavea C mare si D mic.

  • Exercitiu rezolvat

    Exercitiu rezolvat:Un program (cu niste date fixate) dureaza pe masina A, avand frecventa400MHz , 10 secunde. Dorim o masina B pe care rularea sa dureze 6secunde. Proiectantul spune ca poate creste frecventa, dar programul va

    necesita de 1.2 ori mai multi cicli. Care va fi frecventa masinii B ?Explicatie: proiectantul doreste reducerea duratei ciclului prin micsorarea

    naltimii circuitelor (H din desenul anterior); atunci instructiunile vor necesitamai multe cicluri pentru a fi executate, factorul mediu de multiplicare fiind

    1.2.

  • Exercitiu rezolvat

    Rezolvare:Din enunt ni se dau:

    FA = 400MHz (frecventa masinii A, n MHz );TA = 10 s (timpul pe masina A, n secunde s );TB = 6 s (timpul pe masina B , n secunde s );CB/CA = 1.2 (raportul numerelor de cicluri pe masinile A, B );Se cere:FB =? (frecventa masinii B , n MHz ).

    Vom avea:

    FB(3)= CBTB

    ip= 1.2CATB

    (3)= 1.2FATATB

    ip= 1.2400MHz10 s6 s

    = 800MHz

    Comentariu: desi s-a dublat frecventa, performanta (raportul timpilor) nus-a dublat; deci, performanta se obtine greu.

  • Exercitiu rezolvat

    Sfat:In redactarea rezolvarilor, la efectuarea calculelor, mentionati la fiecare pas siunitatile de masura; utilitatea este urmatoarea:

    unele unitati de masura pot contine multipli care trebuie luati nconsiderare (de exemplu, 1 Mega = 106);

    avem posibilitatea sa ne verificam corectitudinea aplicarii formulelor (deexemplu, daca ne asteptam sa obtinem secunde si rezulta cicli, nu estebine).

    Conventie:In cele ce urmeaza, marimea fizica va fi notata cu litera mare iar unitatea demasura cu litera mica, pe cat posibil acceasi litera.

    De exemplu, C = 10 c nseamna ca numarul total de cicli executati este10 (cicli).

  • Masurarea performantei

    Alte doua marimi care ne dau indicatii asupra performantei sunt numarul total

    de instructiuni executate I si numarul mediu ce cicli per instructiuneexecutati (engl: cycles per instruction) CPI , calculat dupa formula:

    CPI =C

    I(4)

    I depinde de program si de date; nu depinde de mpartirea instructiunilor ncicli si nici de durata ciclului.

    Performanta este cu atat mai mare cu cat I este mai mic.CPI depinde de program, de date si de mpartirea instructiunilor n cicli; nudepinde de durata ciclului.

    Performanta este cu atat mai mare cu cat CPI este mai mic.

  • Masurarea performanteiCPI ne permite sa comparam doua implementari hardware diferite ale unuiacelasi set de instructiuni.

    De exemplu, sa presupunem ca avem de implementat o lista ce contineinstructiunile + (adunare) si (nmultire).Presupunem ca avem doua implementari, n care numarul de cicli necesarifiecarei instructiuni este dat de tabelul:

    Nr. cicli + Nr. cicli Implementare 1 10 c 100 c

    Implementare 2 12 c 70 c

    Se pune problema care implementare este mai buna. Raspunsul depinde deprocentajul cu care sunt executate fiecare dintre cele doua instructiuni.Daca pentru categoria de programe si de date avute n vedere, la rulare seexecuta n medie > 93.75% + si restul , este preferabila primaimplementare; daca se executa n medie < 93.75% + si restul , estepreferabila a doua implementare (exercitiu !).Numarul mediu de cicli per instructiune calculat tinand cont de ponderea

    aparitiei fiecarui tip de instructiuni este tocmai CPI . Asasar, cu cat CPIeste mai mic, performanta este mai mare (pentru categoria de programe si dedate vizata).

  • Masurarea performantei

    Din formulele (3) si (4) obtinem ecuatia elementara a performantei:

    T = I CPI D = I CPIF

    (5)

    Ea leaga cei trei factori cheie ai performantei: numarul de instructiuni

    executate I , numarul mediu de cicli pe instructiune executati CPI si durataciclului D (sau frecventa F ).

    Exista interdependente ntre factori; de exemplu, scaderea CPI poate atragecresterea D (deoarece la fiecare ciclu se vor executa operatii mai multe si/saumai complexe).

    Acesti factori trebuie considerati simultan atunci cand analizam un sistem,altfel putem trage concluzii eronate privind performanta - a se vedea urmatorulexercitiu rezolvat.

  • Masurarea performantei

    Ne punem problema cum putem masura T folosind formulele (3) sau (5).

    C este greu de masurat - el depinde de program, de date si de arhitectura(mpartirea instructiunilor n cicli).

    I este mai usor de masurat - depinde doar de program si de date; uneleprocesoare au chiar contoare hardware care numara instructiunile executate -ele se folosesc la simulari.

    CPI este nsa greu de masurat - el depinde de program, de date si dearhitectura (mpartirea instructiunilor n cicli).

  • Masurarea performantei

    Uneori poate fi suficienta o aproximare a lui C , obtinuta urmarind executiaprogramului pe clase de instructiuni. Mai exact:

    Consideram n clase de instructiuni.De exemplu: clasa instructiunilor de salt (din care face parte goto), clasainstructiunilor aritmetice aditive (din care fac parte adunarea, scaderea), clasainstructiunilor aritmetice multiplicative (din care fac parte nmultirea,mpartirea).

    Pentru fiecare clasa k {1, . . . , n} notam cu CPIk media numerelorde cicli necesitati de instructiunile din clasa k .De exemplu, CPIaditive este media dintre numarul de cicli necesitati de oadunare si numarul de cicli necesitati de o scadere.

    Notam deci ca la calcularea lui CPIk se ia cate un singur exemplar din fiecareinstructiune a clasei k , fara ponderi/procentaje.

    Pentru un program si niste date considerate, notam cu Ik numarul deinstructiuni executate din clasa k , k {1, . . . , n}.

  • Masurarea performantei

    Atunci pentru programul, datele si arhitectura considerate, vom avea:

    C 'n

    k=1

    (CPIk Ik) (6)

    Valorile n si CPIk , k {1, . . . , n}, depind doar de arhitectura -pentru o masina data ele sunt fixate si pot fi comunicate prin documentatiamasinii.

    Valorile Ik , k {1, . . . , n}, depind de program si de date, nu si dearhitectura.

    Astfel, pe o masina data, daca vrem sa aflam (cu aproximatie) numarul de cicli

    C consumati la rularea unui anumit program cu anumite date, este suficient saaflam valorile Ik , k {1, . . . , n}, iar acestea sunt mai usor de aflat,deoarece instructiunile se numara mai usor decat ciclii.

  • Masurarea performanteiValoarea C calculata cu formula (6) este nsa doar una aproximativa.De exemplu, presupunem ca pe o masina data avem:

    Clasa Instructiuni Nr. de cicli necesitati

    aditive adunare 1scadere 3

    multiplicative nmultire 10mpartire 30

    Rezulta CPIaditive = 2, CPImultiplicative = 20.Consideram un program si niste date a.. la rulare se executa o adunare si onmultire.

    Valoarea exacta a lui C este: 1 + 10 = 11.Valoarea lui C calculata cu formula (6) este: 2 + 20 = 22.Consideram acum un program si niste date a.. la rulare se executa o scadere sio mpartire.

    Valoarea exacta a lui C este: 3 + 30 = 33.Valoarea lui C calculata cu formula (6) este tot: 2 + 20 = 22.

  • Masurarea performantei

    Intr-adevar, cu formula (6) am considerat de fiecare data ca se executa oinstructiune aditiva si o instructiune multiplicativa, nesesizand ca la primulprogram se executa cele mai rapide instructiuni din cele doua clase, iar la aldoilea program cele mai lente.

    Valoarea lui C calculata cu formula (6) se apropie de valoarea exacta cu atatmai mult cu cat din fiecare clasa instructiunile se executa cu ponderi maiapropiate (cam tot atatea adunari cate scaderi, cam tot atatea nmultiri catempartiri).

  • Exercitiu rezolvatExercitiu rezolvat:Pe o masina data, avem urmatoarele clase de instructiuni si CPI asociate:

    clasa CPIclasaA 1B 2C 3

    Consideram doua programe si niste date, pentru care s-au masurat:

    Program Nr. de instructiuni executate din fiecare clasa

    A B Cprogramul 1 2 1 2programul 2 4 1 1

    Se cer: a) Care program executa mai multe instructiuni ?b) Care program este mai rapid ?

    c) Cat este CPI pentru fiecare program ?

  • Exercitiu rezolvat

    Rezolvare:a) Notam:

    I pk = numarul de instructiuni executate de programul p {1, 2} dinclasa k {A,B ,C};

    I p = numarul total de instructiuni executate de programul p {1, 2}.Avem:

    I 1 = I 1A + I1B + I

    1C = 2i + 1i + 2i = 5i

    I 2 = I 2A + I2B + I

    2C = 4i + 1i + 1i = 6i

    Comentariu: am obtinut I 1 < I 2, ceea ce pare sa arate ca programul 1 estemai performant.

  • Exercitiu rezolvat

    b) Notam:

    C p = numarul total de cicli executati de programul p {1, 2}.Folosind formula (6), avem:

    C 1 = CPIA I 1A + CPIB I 1B + CPIC I 1C= 1ci 2i + 2ci 1i + 3ci 2i = 10c

    C 2 = CPIA I 2A + CPIB I 2B + CPIC I 2C= 1ci 4i + 2ci 1i + 3ci 1i = 9c

    Comentariu:

    Am obtinut C 1 > C 2, ceea ce pare sa arate ca programul 2 este maiperformant, n contradictie cu a).

    Dintre marimile I si C , cea care masoara realist durata executiei este C ,deoarece foloseste aceeasi unitate de masura, ciclul (instructiunile nu dureazatoate la fel de mult). Deci raspunsul corect este cel dat de b).

    Explicatia erorii de la a): programul 1 executa instructiuni mai putine, dar mailungi (executa doua din clasa C , care dureaza n medie cate 3 cicli).

  • Exercitiu rezolvatc) Notam:

    CPI p = numarul mediu de cicli pe instructiune executati de programulp {1, 2}.

    Folosind formula (4), avem:

    CPI 1 = C1

    I 1 =10c5i = 2

    ci (sau 2cpi ).

    CPI 2 = C2

    I 2 =9c6i = 1.5

    ci (sau 1.5cpi ).

    Comentariu:

    Am obtinut CPI 1 > CPI 2, ceea ce pare sa arate ca programul 2 estemai performant, ca la b) (si n contradictie cu a)).Intrucat am vazut ca b) ofera raspunsul corect, rezulta ca, cel putin n acest

    caz, marimea CPI descrie performanta mai bine decat marimea I .Raspunsul de la c) era de asteptat, deoarece programul 2 este mai rapid desiexecuta mai multe instructiuni si de aceea trebuie ca instructiunile executate deel sa fie mai rapide.

    Oricum, acest exercitiu ilustreaza ce am spus mai devreme, ca factorii careinfluienteaza performanta trebuie considerati simultan atunci cand analizam unsistem, altfel putem trage concluzii eronate privind performanta.

  • Masurarea performantei

    O alta marime care ne da indicatii asupra performantei este frecventa deexecutare a instructiunilor:

    FI =I

    T(7)

    Intrucat de obicei valorile lui FI (masurate n instructiuni pe secunda) suntmari, se obisnuieste introducerea nca unui factor 106 la numitor,obtinandu-se marimea:

    MIPS =I

    T 106 (8)masurata n milioane de instructiuni pe secunda (millions instructions persecond).

    FI si MIPS depind de program, de date, de mpartirea instructiunilor ncicli si de durata ciclului.

    Performanta este cu atat mai mare cu cat FI si MIPS sunt mai mari.

  • Masurarea performantei

    Ca si n cazul altor marimi discutate mai devreme, FI si MIPS trebuieconsiderate mpreuna cu ceilalti factori atunci cand analizam un sistem, altfelputem trage concluzii eronate privind performanta - a se vedea urmatorulexercitiu rezolvat.

  • Exercitiu rezolvatExercitiu rezolvat:Pe o masina data, avand frecventa de 500MHz , avem urmatoarele clasede instructiuni si CPI asociate:

    clasa CPIclasaA 1B 2C 3

    Consideram doua programe si niste date, pentru care s-au masurat:

    Program Nr. de instructiuni executate din fiecare clasa

    A B Cprogramul 1 5 1 1programul 2 10 1 1

    Se cer: a) Care sunt timpii CPU pentru cele doua programe ?b) Care sunt valorile MIPS pentru cele doua programe ?

  • Exercitiu rezolvat

    Rezolvare:Situatia seamana cu cea din exercitiul precedent si atunci la fel ca acolo putemafla numarul total de cicli executati. Acum stim n plus si frecventa, iar aceastane va permite ca din numarul de cicli sa aflam timpii CPU.

    Notam:

    I pk = numarul de instructiuni executate de programul p {1, 2} dinclasa k {A,B ,C};

    I p = numarul total de instructiuni executate de programul p {1, 2}.C p = numarul total de cicli executati de programul p {1, 2}.T p = timpul CPU consumat de programul p {1, 2}.MIPSp = valoarea MIPS pentru programul p {1, 2}.

  • Exercitiu rezolvat

    a) Folosind formula (6), avem:

    C 1 = CPIA I 1A + CPIB I 1B + CPIC I 1C= 1ci 5i + 2ci 1i + 3ci 1i = 10c

    C 2 = CPIA I 2A + CPIB I 2B + CPIC I 2C= 1ci 10i + 2ci 1i + 3ci 1i = 15c

    Atunci, folosind formula (3), avem:

    T 1 = C1

    F =10c

    500MHz =10c

    500106 Hz =10c

    500106 cs= 2 108s

    T 2 = C2

    F =15c

    500MHz =15c

    500106 cs = 3 108s

    Comentariu: am obtinut T 1 < T 2, ceea ce pare sa arate ca programul 1este mai performant. Marimea T masoara realist performanta, deoarecefoloseste acelasi etalon pentru ambele programe (toate secundele sunt la fel delungi).

  • Exercitiu rezolvat

    b) Avem:

    I 1 = I 1A + I1B + I

    1C = 5i + 1i + 1i = 7i

    I 2 = I 2A + I2B + I

    2C = 10i + 1i + 1i = 12i

    Atunci, folosind formula (8), avem:

    MIPS1 = I1

    T 1106mips =7i

    2108106mips = 350mipsMIPS2 = I

    2

    T 2106mips =12i

    3108106mips = 400mipsComentariu: am obtinut MIPS1 < MIPS2, ceea ce pare sa arate caprogramul 2 este mai performant, n contradictie cu a).Am vazut nsa ca raspunsul corect este cel dat de a). Explicatia erorii de la b)

    consta n faptul ca programul 2 executa instructiuni rapide (deci executa multeinstructiuni pe secunda), dar foarte multe (si astfel necesita multe secunde, mai

    multe decat programul 1).Asadar, un MIPS mare nu nseamna neaparat un timp mai scurt.Deci, parametrii performantei trebuie analizati mpreuna, nu izolat.

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Numerele si operatiile cu ele sunt concepte matematice.

    Pentru a comunica numerele si a efectua usor operatiie cu ele, transcriemnumerele prin niste reprezentari simbolice si operatiile cu numere prin algoritmide calcul cu aceste reprezentari.

    Modul uzual de reprezentare a numerelor n matematica este prin scrierepozitionala, ca sir de cifre ntr-o anumita baza de enumeratie, de regula baza10. Algoritmii de calcul cu aceste reprezentari opereaza cifra cu cifra,propagand un transport sau luand un mprumut.

    Modul de reprezentare a numerelor n calculator si algoritmii de calcul cu acestereprezentari seamana cu cele folosite n matematica, dar nu sunt identice. Deexemplu, n matematica putem folosi usor oricate simboluri ajutatoare: virgula,semnul -, etc. In calculator, pentru a stoca informatii se folosesc biti, iar unbit stocheaza o informatie bivalenta; odata ce am fixat semnificatia ei, deexemplu cifra 0 si respectiv cifra 1, nu mai avem la dispozitie o alta valoare debit care sa nsemne virgula sau - - totul trebuie sa fie doar sir de cifre (binare).

    In prima sectiune vom descrie pe scurt modul de reprezentare si algoritmii decalcul cu reprezentari folosite n matematica, iar n urmatoarele sectiuni le vomdetalia pe cele folosite n calculator.

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Reprezentarea numerelor ntr-o baza

    Modul de reprezentare a numerelor ntr-o anumita baza si algoritmii de calculcu aceste reprezentari sunt cunoscute din scoala/liceu, nu le vom descrie cutoate detaliile ci doar vom reaminti cateva notiuni si algoritmi, evidentiindanumite idei.

    La baza scrierii pozitionale ntr-o baza se afla scrierea polinomiala n puterilesuccesive ale bazei.De exemplu, reprezentarea 1100 n baza 2 nseamna numarul care se calculeaza1 23 + 1 22 + 0 21 + 0 20, adica 12.

  • Reprezentarea numerelor ntr-o bazaCand definim modul de reprezentare si de calcul cu numerele ntr-o baza b,interfera doua limbaje:- limbajul matematic combinat cu cel natural, n care vorbim (este limbajulgazda a discursului);- limbajul reprezentarilor n baza b, despre care vorbim (este limbajul obiect aldiscursului).Mai spunem ca primul este metalimbaj pentru al doilea.

    Cand ne aflam n metalimbaj si vrem sa comunicam numere sau operatii cu ele,trebuie sa folosim tot reprezentari si algoritmi cu aceste reprezentari, deoarecenu putem comunica direct niste idei ci doar prin niste formalizari ale lor. Inacest scop, folosim reprezentarile si algoritmii din baza 10 (se presupuncunoscuti).

    Deci, n final, metalimbajul si limbajul sunt limbaje de acelasi tip: cel alreprezentarilor pozitionale ntr-o baza, doar ca metalimbajul este n baza 10 iarlimbajul n baza b.In metalimbaj vom scrie reprezentari si algoritmi cu reprezentari dar ne vomgandi la numere si operatii cu numere, n limbaj vom scrie reprezentari sialgoritmi cu reprezentari si ne vom gandi chiar la ele (reprezentarea pozitionalan baza b este un sir finit de simboluri, numite cifre ale bazei b).

  • Reprezentarea numerelor ntr-o baza

    Anumite sintagme pot aparea la fel si n metalimbaj si n limbaj, iar daca nu sededuce din context unde ne aflam, pot aparea confuzii. De exemplu, scrierea1 1 0 0 poate fi considerata n metalimbaj (baza 10) si nseamna numarul o

    mie o suta, sau n limbajul bazei 2 si nsemna sirul 1 1 0 0, prin care sereprezinta numarul doisprezece.

    De aceea, cand este pericol de confuzie, vom folosi scrieri diferite. Mai exact:- o scriere de forma 12 este n metalimbaj si nseamna numarul doisprezece;- o scriere de forma (12)2 este tot n metalimbaj si nseamna ca numaruluidoisprezece ii aplicam procedeul de conversie n baza doi ((.)2 este de fapt ofunctie bijectiva de la numere/reprezentari zecimale la reprezentari binare);- o scriere de forma 11002 este n limbaj si nseamna reprezentarea (sirul decifre binare) 1 1 0 0, prin care se reprezinta numarul doisprezece.Daca nu este pericol de confuzie, putem folosi notatii simplificate. De exemplu,daca din context este clara baza, putem scrie doar 1100, iar daca este clar sinivelul (metalimbaj/limbaj), putem scrie doar 1100.

    In restul acestei sectiuni vom descrie (reaminti) regulile de conversie anumerelor dintr-o baza n alta si algoritmii de calcul cu numerele reprezentatentr-o anumita baza.

  • baza 10 baza b; numere ntregi

    Trecerea din baza 10 ntr-o baza b:

    Cazul numerelor ntregi:Fie x Z/ si b IN, b 2, baza.Consideram x si b scrise n baza 10; facem calculele n baza 10.

    Regula:- mpartim cu rest pe |x | la b, apoi catul la b, etc., pana obtinem catul 0;- luam resturile n ordine inversa si le nlocuim cu cifre ale bazei b;- daca x < 0, punem n fata .

    Observatie: daca am continua procedeul dupa ce am obtinut catul 0, am obtinenoi caturi si resturi 0, care ar genera cifre 0 n stanga reprezentarii, iar acesteanu schimba semantica reprezentarii (nu afecteaza valoarea reprezentata).

  • baza 10 baza b; numere ntregi

    Calculele se pot redacta astfel (C0, C1, ..., Cn sunt cifre ale bazei b):

    x | b

    . |--------

    . | cat0 | b

    . . |--------

    rest0 . | cat1 ------------

    C0 . . Obtinem reprezentarea: Cn ... C1 C0

    rest1 .

    C1 .

    cat(n-1) | b

    . |--------

    . | 0

    .

    restn

    Cn

  • baza 10 baza b; numere ntregi

    Exemplu: (4235)16 = ?

    4235 | 16

    32 |-----

    --- | 264 | 16

    103 16 |-----

    96 -- | 16 | 16

    -- 104 16 |-----

    ==75 96 -- | 1 | 16

    64 -- 0 0 |-----

    -- ==8 0 - | 0

    11 8 1

    B 1

  • baza 10 baza b; numere ntregi

    Daca b are (n baza 10) doar o cifra, atunci catk si restk se pot calculamintal, iar calculele se pot redacta mai simplu:

    x | rest0 C0 /\

    cat0 | rest1 C1 ||

    cat1 | ||

    . || ------------

    . || Obtinem reprezentarea: Cn ... C1 C0

    . ||

    cat(n-1) | restn Cn || citim

    0 |

  • baza 10 baza b; numere ntregi

    Exemplu: (105)2 = ?

    105 | 1 /\

    52 | 0 ||

    26 | 0 ||

    13 | 1 ||

    6 | 0 ||

    3 | 1 ||

    1 | 1 ||

    0 |

    (pentru b < 10 cifrele bazei b sunt aceleasi ca n baza 10 si nu este nevoie sa lemai scriem o data n dreapta).

    Deci: (105)2 = 1101001

  • baza 10 baza b; numere reale

    Cazul numerelor reale (fractionare):Fie x IR si b IN, b 2, baza.Consideram x si b scrise n baza 10; facem calculele n baza 10.

    Regula:- partea ntreaga a lui |x | se reprezinta ca la numere ntregi;- partea fractionara a lui |x | se nmulteste cu b si se ia partea ntreaga, apoi

    partea fractionara ramasa se nmulteste cu b si se ia partea ntreaga, etc., panaobtinem o parte fractionara 0 sau care a mai fost ntalnita (daca x IR \ Q|procedeul continua la infinit, nu este algoritm);

    - luam partile ntregi obtinute n ordine directa si le nlocuim cu cifre alebazei b;

    - daca x < 0, punem n fata .

  • baza 10 baza b; numere reale

    Observatii:- regula nu o contrazice pe cea pentru numere ntregi ci o completeaza

    (afirma ceva si pentru partea fractionara, care la numere ntregi lipseste);cifrele produse de cele doua parti ale regulii (pentru partea ntrega, respectivfractionara) nu se suprapun, deoarece se afla n parti diferite ale virgulei;

    - cu partea ntreaga facem mpartiri succesive la b si obtinem cifre de lavirgula spre stanga; cu partea fractionara facem nmultiri succesive cu b siobtinem cifre de la virgula spre dreapta; per total, cifrele se obtin de la virgulaspre extremitati;

    - fiecare din partile fractionare obtinute reprezinta un numar real dinintervalul [0, 1); cand o nmultim cu b, obtinem un numar real din intervalul[0, b); luand apoi partea ntreaga, obtinem un numar ntreg din multimea{0, . . . , b 1}, care corespunde unei cifre n baza b - aceasta este urmatoareazecimala (n baza b); cu partea fractionara ramasa continuam procedeul;

  • baza 10 baza b; numere reale

    - pana cand se aplica procedeul: daca la un moment dat ntalnim o parte fractionara 0, nmultind cu b

    obtinem o noua parte ntreaga (i.e. o noua zecimala) 0 si o noua partefractionara 0, etc., deci continuand vom obtine noi zecimale 0 nesemnificative;de aceea ne putem opri si conchidem ca am obtinut o fractie zecimala finita; daca la un moment dat obtinem o parte fractionara care a mai fost

    ntalnita, continuand procedeul vom obtine aceeasi succesiune de zecimale cadupa prima ntalnire; de aceea ne putem opri si conchidem ca am obtinut ofractie zecimala periodica (simpla sau mixta); perioada este succesiunea dezecimale generate dupa prima ntalnire;

  • baza 10 baza b; numere reale

    ntrucat partile fractionare generate de procedeu reprezinta numere realedin intervalul [0, 1) si exista o infinitate de asemenea numere distincte, esteposibil ca prin continuarea procedeului sa nu obtinem nici o data o partefractionara 0 sau care a mai fost ntalnita; atunci procedeul nu se termina (nueste algoritm); acest lucru se ntampla nsa doar n cazul numerelor irationale;

    mai exact: daca x Q|, atunci n orice baza b reprezentarea lui x va fi ofractie zecimala finita, periodica simpla sau periodica mixta; daca x IR \ Q|,atunci n orice baza b reprezentarea lui x va fi o fractie zecimala infinitaneperiodica;

    deci, daca ntr-o aplicatie se va cere reprezentati 7.8 n baza 2, vom stica procedeul se termina (si obtinem o fractie zecimala finita, periodica simplasau periodica mixta), deoarece n baza sursa (adica 10) numarul s-a reprezentatprintr-o fractie zecimala finita, deci este rational; nu vom cere reprezentati

    2

    n baza 2;atentie nsa ca un acelasi numar rational poate avea ntr-o baza o

    reprezentare prin fractie zecimala finita, n alta prin fractie zecimala periodicasimpla, n alta prin fractie zecimala periodica mixta.

  • baza 10 baza b; numere reale

    Exemplu: (7.8)2 = ?

    7 | 1 /\ 2 * 0.8 = 1.6 || citim

    3 | 1 || - ||

    1 | 1 || 2 * 0.6 = 1.2 ||

    0 | - ||

    2 * 0.2 = 0.4 ||

    - ||

    2 * 0.4 = 0.8 \/

    -

    2 * 0.8 stop, am reintalnit 0.8

    Deci: (7.8)2 = 111.(1100)

  • baza 10 baza b; numere realeDaca b are (n baza 10) doar o cifra, atunci nmultirea unei parti fractionare cub se poate face mintal, iar calculele se pot redacta mai simplu:

    parte_fractionara_0 | zecimala_1 || citim

    parte_fractionara_1 | zecimala_2 ||

    . | ||

    . | ||

    . | \/

    In cazul exemplului de mai sus vom avea:

    0.8 | 1 ||

    0.6 | 1 ||

    0.2 | 0 ||

    0.4 | 0 \/

    0.8 |

  • baza 10 baza b; numere reale

    Exemplu: (7.8)5 = ?

    7 | 2 0.8 | 4

    1 | 1 0 | stop, am intalnit partea fractionara 0

    0 |

    Deci: (7.8)5 = 12.4

    Observam ca 7.8 se reprezinta n baza 2 prin fractie zecimala periodica, iar nbaza 5 (si n baza 10) prin fractie zecimala finita.

  • baza 10 baza b; numere reale

    Daca numarul x este dat (n baza sursa, 10) printr-o fractie zecimala periodica(simpla sau mixta), nu putem efectua direct calculele regulii de conversie,deoarece nu stim sa nmultim fractii zecimale infinite.

    Regula de conversie se bazeaza nsa pe proprietati matematice, care nu depindde modul de reprezentare a numerelor; de aceea, o putem aplica, dar vom alegealte reprezentari, convenabile - anume prin fractii ordinare.

  • baza 10 baza b; numere reale

    Exemplu: (4.(3))2 = ?

    4 | 0 2 * 0.(3) = 2 * (3/9) = 2 * (1/3) = (2/3) = 0 + (2/3)

    2 | 0 -

    1 | 1 2 * (2/3) = 4/3 = 1 + (1/3)

    0 | -

    2 * (1/3) stop, am reintalnit 1/3

    Deci: (4.(3))2 = 100.(01)

  • baza b baza 10Trecerea dintr-o baza b n baza 10 (b IN, b 2):Regula:

    - nlocuim cifrele cu numerele pe care le reprezinta (scrise n baza 10) siscrierea pozitionala cu scriere polinomiala n puterile succesive ale lui b (scristot n baza 10);

    - facem calculele n baza 10.

    Exemple:(1101)12 = 1 23 + 1 22 + 0 21 + 1 20 = 13(A2C)116 = 10 162 + 2 161 + 12 160 = 2604(12.4)15 = 1 51 + 2 50 + 4 51 = 7 + 45 = 395 = 7.8Observatii:- n primul exemplu, n stanga primului =, 0 si 1 nseamna cifre (n baza 2),iar n dreapta numere (n baza 10); n al doilea exemplu confuzia ntre cifre sinumere este mai mica;- n ultimul exemplu vedem ca pentru cifrele partii fractionare exponentii scadn continuare, la valori negative.

  • baza b baza 10

    Daca reprezentarea n baza b de la care pornim este o fractie zecimalaperiodica (simpla sau mixta), scrierea polinomiala rezultata este infinita.O asemenea suma se poate calcula folosind instrumentul matematic al seriilor.

    Putem evita folosirea seriilor daca nlocuim fractia zecimala sursa cu o fractieordinara (n baza b).Regula de trecere de la fractie zecimala la fractie ordinara n baza b este la felca n baza 10, cu diferenta ca 9 se nlocuieste cu b 1.

    Exemplu:

    (10.1(011))12 = (10 +10111

    1110)12 = (10)

    12 +

    (1011)12 (1)12

    (1110)12= 2 + 111

    14=

    2 + 1014

    = 3814

    = 197

    = 2.(714285)

    Observatie: am folosit si faptul ca functiile de forma (.)b si (.)1b au proprietati

    de morfism (comuta cu operatiile aritmetice).

  • baza b1 baza b2

    Trecerea dintr-o baza b1 ntr-o baza b2 (b1, b2 IN, b1, b2 2):Problema este de aceeasi natura ca n cazul trecerilor baza 10 baza b sibaza b baza 10 de mai nainte, deci am putea sa aplicam regulile de acolo.Dar, daca procedam ca la trecerea baza 10 baza b, va trebui sa facemcalculele n baza b1, iar daca procedam ca la trecerea baza b baza 10, vatrebui sa facem calculele n baza b2.

    Daca vrem sa facem calculele doar n baza 10, vom trece prin baza 10compunand cele doua reguli.

    Regula:baza b1 baza 10 baza b2

  • baza b1 baza b2

    Trecerea baza b1 baza b2 se poate face mai simplu, fara a mai trece prinbaza 10, daca una din baze este putere a celeilalte:

    Trecerea bk b (b, k IN b 2, k 1)Regula:

    - nlocuim fiecare cifra a bazei bk cu cate un grup de k cifre ale bazei b;- eliminam 0-le extreme (din stanga partii ntregi si din dreapta partii

    fractionare);

    Trecerea b bk (b, k IN b 2, k 1)Regula:

    - grupam cate k cifre, de la virgula spre stanga si spre dreapta, completandeventual cu 0-uri grupurile extreme (pentru a avea grupuri de k cifre); aceste0-uri se pun la stanga n grupul aflat cel mai la stanga al partii ntregi si ladreapta n grupul aflat cel mai la dreapta al partii fractionare;

    - nlocuim fiecare grup de k cifre ale bazei b cu cate o cifra a bazei bk .

  • baza b1 baza b2

    Observatii:

    - pentru a aplica regulile de mai nainte, este necesar sa stim cele 2k

    corespondente posibile ntre o cifra a bazei bk si un grup de k cifre ale bazei b;acestea se pot determina aplicand trecerea prin baza 10 (baza bk baza 10 baza b) si se pot retine ntr-un tabel (cu 2k linii);- explicatia intuitiva a acestor reguli este urmatoarea: daca n scriereapolinomiala n puterile succesive ale lui b, cu coeficienti 0, b 1, grupam catek termeni consecutivi si dam factor comun puterea lui b cea mai mica, obtinemo scriere polinomiala n puterile succesive ale lui bk , cu coeficienti 0, bk 1;din unicitatea acestor scrieri rezulta ca ele dau reprezentarile n bazele b si bk .

  • baza b1 baza b2

    Exemplu: Sa se converteasca 1A.C 16 n baza 2 si 11011.1012 n baza 16.

    Avem 16 = 24, iar grupurile posibile de 4 cifre binare si cifrele hexacorespunzatoare reprezinta numerele 0, 15 si sunt cuprinse n tabelul:

    Zec Bin Hex Zec Bin Hex Zec Bin Hex Zec Bin Hex0 0000 0 4 0100 4 8 1000 8 12 1100 C1 0001 1 5 0101 5 9 1001 9 13 1101 D2 0010 2 6 0110 6 10 1010 A 14 1110 E3 0011 3 7 0111 7 11 1011 B 15 1111 F

    Atunci avem:

    1A.C 16 1 A . C 0001 1010 . 1100 00011010.1100 11010.11211011.1012 1 1011 . 101 0001 1011 . 1010 1 B . A 1B.A16

  • baza b1 baza b2

    Observatie: metodele de mai sus nu se pot aplica pentru a trece direct din baza8 n baza 16 sau invers, deoarece 16 este multiplu al lui 8, dar nu putere a lui8. Putem nsa proceda n doi pasi, trecand prin baza 2, de exemplu:

    baza 8 baza 2 baza 16

  • Operatii aritmetice ntr-o baza b

    Operatiile aritmetice cu numerele scrise ntr-o baza b 2 oarecare se fac dupareguli asemanatoare ca n baza 10, dar transportul si mprumutul trebuie sa sefaca la b, nu la 10.

    Pentru calculele de o cifra n baza b putem trece numerele n baza 10, facemcalculele acolo, apoi trecem rezultatele n baza b; ntrucat toate calculele de ocifra n baza b posibile sunt n numar de b2, este suficient sa le facem pe toateo singura data si sa retinem rezultatele ntr-o tabla a operatiei respective nbaza b.

  • Operatii aritmetice ntr-o baza bExemplu: In baza 2, sa se adune: 1011 + 110

    Tabla adunarii n baza 2 este:

    + 0 1

    0 0 1

    1 1 10

    De exemplu: 1 + 1 = 1 + 1 = 2 = 10.

    Atunci, avem:

    1 0 1 1 +

    1 1 0

    ---------

    1 0 0 0 1

    Pe pozitia unitatilor am avut 1 + 0 = 1, fara transport; pe urmatoarea pozitieam avut 1 + 1 = 10 (adica numarul 2), s-a pastrat 0 si s-a propagat 1; peurmatoarea pozitie am avut 0 + 1 + 1 (ultimul 1 provenit din transport) = 10,s-a pastrat 0 si s-a propagat 1; etc.

  • Operatii aritmetice ntr-o baza b

    Exemplu: In baza 16, sa se scada: BA - 9B

    Avem:

    B A -

    9 B

    -----

    1 F

    Pe pozitia unitatilor avem A B = 10 11 < 0; de aceea, mprumutam 1 depe pozitia urmatoare si atunci calculul este 1 16 + 10 11 = 15 = F . Pepozitia urmatoare avem B 1 9 (acel 1 a fost cedat la mprumut)= 11 1 9 = 1 = 1.

  • Operatii aritmetice ntr-o baza bExemplu: In baza 2, sa se nmulteasca: 110.11 x 1.001Avem:

    1 1 0.1 1 x

    1.0 0 1

    -----------

    1 1 0 1 1

    1 1 0 1 1

    -----------------

    1 1 1.1 0 0 1 1

    Inmultirea ntr-o baza oarecare se face tot dupa reguli asemanatoare ca n baza10, dar pentru baza 2 aceste reguli se pot simplifica, deoarece singurele cifresunt 0 si 1, care desemneaza respectiv numerele 0 si 1, care sunt factoranulator, respectiv element neutru, la nmultire; nmultirea cu un 0 presupunescrierea unui rand de 0-uri, care nu conteaza la adunare si se pot omite, iarnmultirea cu un 1 revine la a scrie o copie a denmultitului; asadar, pentru aface nmultirea, este suficient sa parcurgem nmultitorul de la dreapta sprestanga si pentru fiecare 1 ntalnit sa mai scriem o copie a denmultitului, cucifra unitatilor aliniata la acel 1, iar n final sa adunam randurile scrise - ceea ceam facut mai sus; n final, numarul de zecimale ale produsului este sumanumerelor de zecimale ale factorilor, la fel ca n cazul bazei 10.

  • Operatii aritmetice ntr-o baza b

    Exemplu: In baza 2, sa se mparta: 10000.01 : 11

    Avem:

    1 0 0 0 0.0 1 | 1 1

    1 1 |-----

    ----- | 1 0 1.0 1(1 0)

    = = 1 0 0

    1 1

    -----

    = = 1 0 1

    1 1

    -----

    = 1 0 0

    1 1

    -----

    = = 1 0

  • Operatii aritmetice ntr-o baza b

    Cand facem o mpartire, trebuie sa urmarim daca catul rezulta ca o fractiezecimala finita sau se formeaza o perioada. Pentru aceasta, dupa ce ladempartit am trecut de virgula si am coborat ultima cifra nenula, retinemresturile succesive obtinute ntr-o lista; daca la un moment dat un rest este 0,ne oprim, a rezultat o fractie zecimala finita; daca la un moment dat un rest serepeta, ne oprim, a rezultat o fractie zecimala periodica, iar perioada ncepe cucifra generata la prima aparitie a restului care s-a repetat.

    In exemplul nostru, dupa ce la dempartit am trecut de virgula si am coboratultima cifra nenula, am obtinut succesiv urmatoarele resturi: 10, 1, 10(repetitie).

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Reprezentarea n calculator

    Fie M IN,Z/, IR o multime de numere pe care dorim sa le reprezentam ncalculator.

    Consideram o locatie de n biti: bn1 . . . b0 (de obicei n este multiplu de 8).

    Notam Cn = {cn1 . . . c0|ci {0, 1}}, multimea configuratiilor de 0, 1 pe npozitii.

    O reprezentare este o functie [.]n : M Cn bijectiva.Observatii:- M, n si [.]n trebuie alese a.. [.]n sa fie bijectiva, deoarece noi reprezentamnumerele n calculator, operam asupra lor cu calculatorul, dar la sfarsit dorim saputem interpreta rezultatul (sa aflam ce numar are reprezentarea respectiva),ori aceasta nseamna sa aplicam [.]1n ;- [.]n nu poate fi (.)2 (reprezentarea binara folosita n matematica), deoareceavem valori de biti pentru a desemna doar 0 si 1, nu si , ., etc.; deci, trebuiefacuta o alta codificare;- n plus, regula de reprezentare prin care este definita [.]n trebuie aleasa a.. sapermita o implementare usoara si eficienta a unor operatii hardware pe Cn princare sa traducem operatiile aritmetice pe M.

  • Reprezentarea n calculator

    Consideram urmatoarele operatii hardware la nivel de bit:

    a b a|b (or) a&b (and) a b (xor)0 0 0 0 00 1 1 0 11 0 1 0 11 1 1 1 0

    a a (not)

    0 11 0

  • Reprezentarea n calculatorPe Cn putem considera mai multe operatii hardware (lor le corespundinstructiuni n limbajul masina sau de asamblare), de exemplu:

    - Operatii logice binare pe biti: | (or), & (and), (xor), etc.; ele se efectueazaaplicand bit cu bit operatiile logice respective, conform tabelului anterior.

    Exemplu (n = 8): 11000101 &0100011001000100

    - Operatii aritmetice binare: + (adunare), (scadere), etc.; ele se efectueazaaplicand algoritmii de calcul cu reprezentarile binare ale numerelor naturalefolositi n matematica (ilustrati n sectiunea precedenta); un transport dinpozitia bn1 se pierde, iar un mprumut cerut la aceasta pozitie se primesteautomat (din afara).

    Exemplu (n = 8): 11000101 +0100011000001011

    00001011 0100011011000101

    (n primul caz am avut un transport din pozitia 7, care s-a pierdut, iar n aldoilea caz s-a cerut un mprumut la pozitia 6, cererea s-a transmis la pozitia 7,unde mprumutul s-a primit automat din afara, iar cand acesta s-a transmisla pozitia 6, unde a fost generata cererea, a lasat n urma un 1 pe pozitia 7).

  • Reprezentarea n calculator

    - operatii logice unare: (complement fata de 1), (complement fata de 2); cn1 . . . c0 se efectueaza negand fiecare bit ci , conform tabelului anterior; cn1 . . . c0 se efectueaza negand fiecare bit ci si apoi adunand 1 aritmetic (cueventuala propagare a transportului);

    Exemplu (n = 8): 0100110010110011

    0100110010110100

    Observatie: cn1 . . . c0 se poate obtine mai simplu astfel:- daca cn1 = . . . = c0 = 0, nu se schimba nimic;- altfel, daca k = min{i {0, . . . n 1}|ci = 1}, atunci bitii cn1, . . . , ck+1 seneaga iar bitii ck , . . . , c0 se lasa neschimbati.

  • Reprezentarea n calculator

    Se constata ca operatiile hardware pe Cn considerate nu sunt independentelogic (se pot exprima unele prin altele):

    Teorema: Pentru orice , Cn avem: = ( ) + 1 = + ( ) = + (( ) + 1)

    (am notat prin 1 configuratia 0 . . . 01 Cn).Exemplu: ntr-un exemplu anterior am calculat ca 00001011 01000110 =11000101; sa verificam ca obtinem acelasi rezultat si cu formula pentru dinteorema:

    Daca = 00001011 si = 01000110, atunci: = 10111001( ) + 1 = 10111001 + 00000001 = 10111010 + (( ) + 1) = 00001011 + 10111010 = 11000101

  • Reprezentarea n calculator

    De aceea, + si , desi exista ca instructiuni diferite n limbajul masina sau deasamblare, intern sunt realizate cu un acelasi circuit, numit sumator.

    La fel, exista instructiuni masina pentru aplicarea algoritmilor de nmultire simpartire, care intern sunt realizate prin combinatii de aceleasi cateva circuitesimple (de exemplu, nmultirea = adunare repetata, mpartirea = scadererepetata).

    Operatiile din limbajele de nivel nalt sunt traduse de compilator princombinatii de operatii implementate hardware. Cu cat limbajul este de nivelmai jos (i.e. mai apropiat de hardware), cu atat combinatia este mai simpla.

    De exemplu, n limbajul C exista operatorii |, &, ^, ..., iar ei pot fi tradusi princate o singura operatie | , & , , ... (de aceea am notat asa).

  • Reprezentarea n calculator

    In continuare, vom studia algoritmii de reprezentare [.]n pentru diverse tipuri denumere.

    Pentru un numar oarecare x , vom nota (x)n2 reprezentarea lui x n baza 2folosita n matematica (a se vedea sectiunea anterioara), completata cu cifresemnificative 0 pana la n pozitii.

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Reprezentarea ca ntreg fara semn

    In limbajul C, reprezentarea ca ntreg fara semn se foloseste n cazul tipurilorntregi nsotite de unsigned:

    unsigned char, unsigned short, unsigned int,unsigned long, unsigned long long

    Reprezentarea ca ntreg fara semn pe n pozitii se defineste astfel:

    M := {0, . . . , 2n 1} IN[.]n := [.]

    un : {0, . . . , 2n 1} Cn, [x ]un = (x)n2.

    Exemplu: In limbajul C (versiunea compilatorului TC++ 1.00) avem:unsigned short x, y, z;

    /* n = 16, M = {0, . . . , 65535} */scanf{"%hu%hu", &x, &y};

    /* aplica [.]u16 */z = x + y;

    /* compilatorul traduce + prin + */printf{"%hu", z};

    /* aplica [.]u161

    */

  • Reprezentarea ca ntreg fara semn

    Din modul cum se fac operatiile implementate hardware discutat mai devreme,rezulta ca operatiile cu numerele naturale reprezentate astfel se fac mod 2n,mai exact:

    Teorema:Daca op = +,, . . . atunci: [[x ]un op [y ]un]un1 = (x op y) mod 2n

    (mod 2n se calculeaza a.. sa produca un rezultat {0, . . . , 2n 1}).In particular, daca x op y M, atunci: [[x ]un op [y ]un]un1 = x op y .Asadar, daca reprezentam x si y si aplicam op din calculator, obtinemreprezentarea lui x op y din matematica modulo 2n; daca nu avem depasire,este chiar x op y din matematica.

  • Reprezentarea ca ntreg fara semn

    In particular, vom avea:

    Daca x , y , x y M, atunci: [[x ]un [y ]un]un1 = x y ,adica: [[x ]un+ ( [y ]un)]un1 = x y

    sau: [[x ]n+ (([y ]n)+ 1)]1n = x y

    De asemenea, vom avea:

    Daca x M, atunci: [ [x ]un]un1 = x + 2n,adica: [([x ]un)+ 1]un1 = x + 2n.

  • Reprezentarea ca ntreg fara semnExemplu: In limbajul C consideram declaratiile:

    unsigned char x,y,z; /* n = 8, M = {0, ..., 255} */

    1) Secventa de cod: x = 200; y = 200; z = x + y; printf("%d",z);afisaza: 144

    400

    --------------------

    144

    Intuitiv, ne imaginam ca intervalul [0,...,255] se multiplica de-a lungul axeireale, determinam punctul aflat la distanta 400 de origine, apoi masuramdeplasamentul acestui punct fata de nceputul intervalului n care se afla,obtinand rezultatul 144 (desenul din stanga).Sau, ne imaginam ca valoarea 400 se nfasoara parcurgand circular intervalul[0,...,255] si ce ramane n interval este rezultatul 144 (desenul din dreapta).

  • Reprezentarea ca ntreg fara semn

    2) Secventa de cod: x = 255; ++x; face ca x sa devina 0Secventa de cod: x = 0; --x; face ca x sa devina 255

    3) Secventa de cod: for(x = 0; x < 256; ++x); este un ciclu infinit.Intr-adevar, x primeste succesiv valorile 0, 1, 2, ..., 255, 0, 1, ..., deci vom

    avea mereu x < 256.De notat ca la efectuarea testului x < 256 operanzii sunt convertiti la tipul

    int, iar comparatia se face n cadrul tipului int.

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Reprezentarea n complement fata de 2

    In limbajul C, reprezentarea n complement fata de 2 se foloseste n cazultipurilor ntregi ne-nsotite de unsigned:

    char, signed char, short, signed short, int, signed int,long, signed long, long long, signed long long

    Reprezentarea n complement fata de 2 pe n pozitii se defineste astfel:

    M := {2n1, . . . , 2n1 1} Z/

    [.]n := [.]sn : {2n1, . . . , 2n1 1} Cn, [x ]sn =

    {(x)n2, x 0

    (2n + x)n2, x < 0(aceasta functie s.n.codul complementar fata de 2).

    Observatie: compact, putem scrie: x M, [x ]sn = ((2n + x) mod 2n)n2.

  • Reprezentarea n complement fata de 2

    Exemplu: In limbajul C, pentru tipul char avem: n = 8,M = {128, . . . , 127}.Ilustram modul de reprezentare a catorva valori:

    -128 -1 0 127

    --[-------][-------]--

    \ \ |

    \ |\ |

    \ | \ |

    \ | \ |

    \ | \ |

    \ | \ |

    \ | \ |

    \| \|

    \ \

    |\ |\

    | \ | \

    | \ | \

    | \ | \

    | \ | \

    | \ | \

    | \| \

    | \ \

    | |\ \

    --[-------][-------]--

    0 127 128 255

    127: 01111111 = (127)n2126: 01111110 = (126)n2

    ...1: 00000001 = (1)n20: 00000000 = (0)n2

    -1: 11111111 = (255)n2 = (256 1)n2-2: 11111110 = (254)n2 = (256 2)n2...

    -127: 10000001 = (129)n2 = (256 127)n2-128: 10000000 = (128)n2 = (256 128)n2Deci, intervalul {0, . . . , 127} este lasat pe loc, intervalul{128, . . . ,1} este mapat n intervalul {128, . . . , 255},apoi numerele naturale rezultate sunt reprezentate ca ntregifara semn.

  • Reprezentarea n complement fata de 2Operatiile aritmetice se fac tot mod 2n, dar translatat (deplasamentul semasoara fata de nceputul intervalului {2n1, . . . , 2n1 1}).Exemplu: In limbajul C, avem:

    char x, y, z; /* n = 8, M = {-128, ..., 127} */

    x = -100; y = -100; z = x + y;

    printf("%d", (int)z); /* afisaza: 56 */

    distanta 184 distanta 184

    ------------------- -------------------

    | v | v

    --[------------|----|-------][------------|----|-------]--

    -384 -200^ -129 -128 0 56 127

    | suma matematica 200 |

    -----------------------

    Ne putem imagina ca intervalul {128, . . . , 127} este parcurs circular:

    In particular: 128 1 produce 127, 127 + 1 produce 128.

  • Reprezentarea n complement fata de 2

    Teorema:

    (1) Daca [x ]sn = cn1 . . . c0, atunci: x 0 cn1 = 0(cn1 s.n. bitul de semn)

    (2) Daca x ,x M, atunci [x ]sn = [x ]sn = ([x ]sn)+1(3) Daca x , y , x y M, atunci [x y ]sn = [x ]sn+([y ]sn) = [x ]sn+(([y ]sn)+1)(4) Daca x {2p1, 2p1 1}, [x ]sp = cp1 . . . c0 si p < q, atunci:

    [x ]sq = cp1 . . . cp1 cp1 . . . c0 (se extinde bitul de semn).q p ori

  • Reprezentarea n complement fata de 2

    Exemplu: Fie x = 32, y = 41. Calculati z = x y folosind reprezentarea ncomplement fata de 2 pe 8 biti.

    Avem n = 8, deci M = {128, . . . , 127}.Deoarece x , y 0, avem [x ]s8 = (x)82, [y ]s8 = (y)82.Pentru (x)82 observam ca 32 = 2

    5, iar pentru (y)82 aplicam regula de conversiebaza 10 baza 2 din prima sectiune: 41 | 1

    20 | 0

    10 | 0

    5 | 1

    2 | 0

    1 | 1

    0 |

    Atunci:[y ]s8 = 00101001[y ]s8 = 11010110

    1+([y ]s8) = 11010111[x ]s8 = 00100000

    x+(1+([y ]s8)) = 11110111Avem 11110111 = (247)82 (aplicand regulile de conversie baza 2 baza 10 dinprima sectiune) = [z]s8; deoarece bitul 7 (de semn) din [z]

    s8 este 1, nseamna ca

    z < 0, deci [z]s8 s-a obtinut cu al doilea caz al definitiei; asadar[z]s8 = (256 + z)

    82 = (247)

    82, de unde (aplicand inversa functiei (.)

    82) rezulta ca

    256 + z = 247, adica z = 9.Putem verifica, efectuand scaderea n baza 10, ca 32 41 = 9.

  • Reprezentarea n complement fata de 2

    Observatie: Daca efectuam [x ]sn, adica ([x ]sn)+1, pentru x = 2n1, vomobtine tot [x ]sn, ceea ce, cu punctul (2) din teorema anterioara, pare sa nsemneca (2n1) = 2n1 (deoarece au aceeasi reprezentare).De exemplu, pentru n = 8 vom obtine ca (128) = 128.Intr-adevar, avem succesiv:

    [128]s8 = 10000000 01111111+1 10000000 = [128]s8.

    Totusi, nu exista nici o contradictie aritmetica sau cu bijectivitatea lui [.]sn,deoarece formula de la punctul (2) din teorema anterioara se aplica doar dacax ,x M, iar n acest caz x 6 M.

  • Reprezentarea n complement fata de 2

    Exemplu: In limbajul C (TC++ 1.00) consideram secventa de cod:

    char x; /* p = 8 */

    short y; /* q = 16 */

    x = -127;/* se reprezinta -127 ca intreg cu semn pe 8 biti */

    y = x; /* se extinde reprezentarea din x de la 8 biti la 16 biti,

    prin propagarea bitului de semn */

    Verificati ca valoarea reprezentata n y este tot 127 (punctul (4) din teoremaanterioara).

    Avem: [127]s8 = (256 127)82 (deoarece 127 < 0) = (129)82 = 10000001.Prin propagarea bitului de semn la 16 biti, obtinem: 1111111110000001 =((216 1) (27 1) + 1)162 = (65535 127 + 1)162 = (65409)162Aceasta este reprezentarea ca ntreg cu semn a unui numar z < 0, deoarecebitul 15 (de semn) este 1.Atunci [z]s16 = (65536 + z)

    162 = (65409)

    162 , deci 65536 + z = 65409, deci

    z = 127.

  • Cuprins

    1 Performata calculatoarelorConceptul de performantaMasurarea performantei

    2 Aritmetica sistemelor de calculReprezentarea numerelor n matematicaReprezentarea numerelor n calculatorReprezentarea numerelor naturale ca ntregi fara semnReprezentarea numerelor ntregi n complement fata de 2Reprezentarea numerelor reale n virgula mobila

    3 Logica pentru calculatoareAlgebre booleeneFunctii booleeneParticularizare la cazul B2

    4 Circuite logiceCircuite logice, Sisteme digitale0-DS (Circuite combinationale, Functii booleene)1-DS (Memorii)2-DS (Automate finite)

  • Notatia stiintifica

    Notatia stiintifica si aritmetica sistemelor de calcul n virgula mobila folosescun mod de reprezentare a unei aproximatii a unui numar real care sa suporte undomeniu larg de valori. Numerele sunt, n general, reprezentate aproximativprintr-o valoare cu un numar fixat de cifre semnificative care este scalata cuajutorul unui exponent:

    a bea este mantisa (engl: mantissa, significand, coefficient), b este baza deenumeratie n care sunt scrise numerele si baza scalarii (de obicei 2, 10 sau 16),e este exponentul; semnul + se poate omite.

  • Notatia stiintificaScalarea cu ajutorul exponentului permite acoperirea unui domeniu larg devalori, atat foarte mici cat si foarte mari, cu aceeasi precizie relativa. Deexemplu cu 9 cifre semnificative putem descrie, n functie de exponentii folositi,atat distante n astronomie cu precizie de 1 an lumina, cat si distante n fizicaatomica cu precizie de 1 femtometru (1015 metri) - ambele precizii fiindacceptabile n domeniul respectiv.

    Faptul ca se retine un numar fix de cifre pentru mantisa si exponent face camultimea numerelor reale reprezentabile sa fie de fapt o multime finita denumere rationale, dintr-un interval fixat.Mai mult, folosirea scalarii face ca aceste numere sa nu fie uniform spatiate nintervalul respectiv: valorile mici, apropiate de 0, sunt reprezentate cu pasi mici(ex. 1 femtometru), n timp ce valorile mari, apropiate de extremeleintervalului, sunt reprezentate cu pasi mari (ex. 1 an lumina).

    Denumirea de virgula mobila se refera la faptul ca virgula (engl: radix point),numita n functie de baza si virgula zecimala (engl: decimal point), virgulabinara (engl: binary point), etc., poate fi mutata oriunde n raport cu cifrelesemnificative, modificand corespunzator exponentul:

    0.123 102 = 1.230 101 = 12.30 100 = 123.0 101

  • Notatia stiintifica

    In informatica, termenul de virgula mobila (engl: floating point) denumestearitmetica sistemelor de calcul ce foloseste reprezentari ale numerelor pentrucare virgula binara nu este fixata.

    O reprezentare n virgula mobila este notatie stiintifica daca are o singura cifran stanga virgulei si este notatie stiintifica normalizata daca n plus acea cifraeste nenula (i.e nu are 0-uri la nceput).

    De exemplu 1.230 101 este n notatie stiintifica normalizata, dar0.123 102, 12.30 100, 123.0 101 nu sunt.Constatam ca notatia stiintifica normalizata pentru un numar real nenul esteunica.

  • Formatul intern n virgula mobila

    Reprezentarea n calculator a numerelor reale n virgula mobila estereglementata prin standardul IEEE 754, adoptat initial n 1985 (IEEE754-1985) si reactualizat n 2008 (IEEE 754-2008). Mai nou, este folositstandardul ISO/IEC/IEEE 60559:2011.

    Pentru reprezentare (formatul intern) se aleg doua dimensiuni n si k ,2 k n 2 si se folosesc locatii de n biti bn1 . . . b0compuse din urmatoarele campuri:

    bn1 (1 bit, cel mai semnificativ): semnul; bn2 . . . bnk1 (urmatorii k biti): caracteristica; bnk2 . . . b0 (ultimii nk1 biti, cei mai putin semnificativi): fractia:

    bn1 bn2 . . . bnk1 bnk2 . . . b0 semn (1 bit) caracteristica (k biti) fractie (n k 1 biti)

  • Formatul intern n virgula mobila

    Multimea valorilor reprezentabile n acest format este specificata prinintermediul a trei parametri ntregi (baza de enumeratie si de scalare este

    ntotdeauna 2): p = n k : numarul de cifre ale mantisei (precizia); Emin = 2k1 + 2: exponentul minim; Emax = 2k1 1: exponentul maxim.Pentru numerele reale nenule reprezentabile, exponentul E trebuie sa se afle nintervalul de numere ntregi Emin E Emax, dar se dorestereprezentarea lui ca ntreg fara semn, nu prin complement fata de doi; deaceea, se mai considera parametrul:

    bias = 2k1 1: bias (sau polarizare);iar n campul de k biti se reprezinta, ca ntreg fara semn, valoareac = E + bias (avem 1 c 2k 2); aceasta s.n.caracteristica (sau exponent biasat sau exponent polarizat).

  • Formatul intern n virgula mobila

    Constatam ca n campul caracteristica al formatului pot fi stocate si valorile

    c = 0 (reprezentata cu toti bitii 0) si c = 2k 1 (reprezentata cu totibitii 1), care nu pot fi produse de expresiile E + bias ; ele sunt folositepentru a codifica valori speciale, ca 0, , numere denormalizatemici, valori invalide NaN (Not A Number).In ceea ce priveste mantisa, numerele vor fi mai ntai scalate a.. mantisa sa

    aiba n stanga virgulei doar o cifra (1 n cazul numerelor normalizate si 0 ncazul numerelor denormalizate), iar n ultimii n k 1 biti ai formatuluiva fi stocata fractia, care este partea mantisei din dreapta virgulei (cifra dinstanga putandu-se deduce din context). In unele texte, prin mantisa estedenumita de fapt fractia.

    Se mai spune ca aceasta reprezentare este semn si modul (engl: sign andmagnitude) deoarece semnul are un bit separat de restul numarului.

  • Formatul intern n virgula mobila

    Valorile reprezentabile n formatul specificat de n si k (sau de p, Emin,Emax) si modul lor de reprezentare (codare) sunt urmatoarele:

    Numerele de forma (1)s 2E 1.c1 . . . cp12, undes {0, 1},Emin E Emax este un numar ntreg,c1, . . . , cp1 {0, 1}

    (numere reale nenule normalizate).

    Ele sunt reprezentate astfel:

    bn1 = s , semnul;bn2 . . . bnk1 = E + bias , exponentul biasat,

    reprezentat ca ntreg fara semn; sirul de biti prin care se reprezinta variaza

    de la 0 . . . 01 (valoarea 1) la 1 . . . 10 (valoarea 2k 2);bnk2 . . . b0 = c1 . . . cp1, fractia (se omite deci c0 = 1).

  • Formatul intern n virgula mobila

    Numerele de forma (1)s 2Emin 0.c1 . . . cp12, undes {0, 1},c1, . . . , cp1 {0, 1} si cel putin unul dintre ci este 1

    (numere reale nenule denormalizate mici).

    Ele sunt reprezentate astfel:

    bn1 = s , semnul;bn2 . . . bnk1 = 0, reprezentat prin sirul de biti 0 . . . 0;bnk2 . . . b0 = c1 . . . cp1, fractia (se omite deci c0 = 0).

  • Formatul intern n virgula mobila

    Numerele de forma0 = (1)s 2Emin 0.0 . . . 02, undes {0, 1}.

    Ele sunt reprezentate astfel:

    bn1 = s , semnul;bn2 . . . bnk1 = 0, reprezentat prin sirul de biti 0 . . . 0;bnk2 . . . b0 = 0 . . . 0, fractia.

    Notam ca numerele de forma0 se reprezina cu toti bitii 0, mai putineventual bitul de semn bn1.

    Desi reprezentarile lui +0 si0 sunt diferite (prin bitul de semn), semnulare relevanta n anumite circumstante, cum ar fi mpartirea la 0 (mpartirea1.0/ + 0 produce +, mpartirea 1.0/ 0 produce), iar naltele nu.

  • Formatul intern n virgula mobila

    Valorile.Ele sunt reprezentate astfel:

    bn1 = s , semnul (0 = +, 1 = );bn2 . . . bnk1 = 2k 1, reprezentat prin sirul de biti 1 . . . 1;bnk2 . . . b0 = 0 . . . 0, fractia nula.

    Valori NaN (Not A Number) - sunt entitati simbolice codificate n formatde virgula mobila ce semnifica ideea de valoare invalida.

    Ele sunt reprezentate astfel:

    bn1 este oarecare;bn2 . . . bnk1 = 2k 1, reprezentat prin sirul de biti 1 . . . 1;bnk2 . . . b0 este o fractie nenula (cel putin unul dintre

    bnk2, . . . , b0 este 1).

  • Formatul intern n virgula mobila

    Exista doua feluri de NaN :Signaling NaN (sNaN ): semnaleaza (declansaza) exceptia de

    operatie invalida de fiecare data cand apare ca operand ntr-o operatie;manifestarea exceptiei poate diferi de la o implementare la alta si poate fi deignorare sau poate consta n setarea unor flag-uri si/sau executarea unui trap

    (ntrerupere) care lanseaza o rutina ce primeste NaN -ul ca parametru;

    Quiet NaN (qNaN ): se propaga prin aproape toate operatiilearitmetice fara a semnala (declansa) exceptii, iar rezultatul operatiilor va fi tot

    un qNaN , anume unul dintre qNaN -urile date ca operand; ele sunt utileatunci cand nu vrem sa detectam/tratam o eroare chiar la momentul aparitieiei ci la un moment ulterior.

    Standardul IEEE 754 cere a fi implementat cel putin un sNaN si cel putin unqNaN ; bitul de semn si bitii de fractie pot diferi de la o implementare la alta- de exemplu n ei se poate codifica motivul erorii (n cazul sNaN -urilor el vafi transmis astfel rutinei de tratare a exceptiei, iar n cazul qNaN -urilor el seva propaga prin operatiile aritmetice pana la locul tratarii).

  • Formatul intern n virgula mobilaAplicand invers regulile de mai sus, putem determinara valoarea v reprezentataprintr-un sir de biti bn1 . . . b0 n formatul specificat de n si k . Notam:s = numarul 0 sau 1 stocat n bitul bn1 (semnul);c = numarul natural reprezentat ca ntreg fara semn n bitii

    bn2 . . . bnk1 (caracteristica);f = sirul de p 1 cifre binare stocat n bitii bnk2 . . . b0 (fractia). Daca c = 2k 1 (reprezentat ca 1 . . . 1) si f 6= 0 . . . 0, atunciv este un NaN (indiferent de s ). Daca c = 2k 1 (reprezentat ca 1 . . . 1) si f = 0 . . . 0, atunciv = (1)s . Daca 0 < c < 2k 1, atunciv = (1)s 2c2k1+1 1.f 2 (numar nenul normalizat). Daca c = 0 (reprezentat ca 0 . . . 0) si f 6= 0 . . . 0, atunciv = (1)s 22k1+2 0.f 2 (numar nenul denormalizat). Daca c = 0 (reprezentat ca 0 . . . 0) si f = 0 . . . 0, atunciv = (1)s 0 (zero).

  • Formatul intern n virgula mobilaDin aceste reguli deducem ca multimea numerelor reprezentabile este inclusa nintervalul:

    [22k1n+k (2nk 1), +22k1n+k (2nk 1)]Nu toate numerele reale din acest interval pot fi nsa reprezentate, deoarece seretin doar un numar finit de zecimale n baza 2. Numerele sunt reprezentate cuun anumit pas, care creste cu cat ne apropiem de capetele intervalului.Operatiile aritmetice n virgula mobila rotunjesc (si deci altereaza) rezultatula.. sa fie una dintre valorile reprezentabile. De aceea, pasul reprezentariiinfluienteaza precizia calculelor.

    Intrucat multimea valorilor reprezentabile este simetrica fata de 0 (daca unnumar x este reprezentabil, atunci si x este reprezentabil, reprezentareadiferind doar n bitul de semn), vom analiza doar intervalul:

    [0, 22k1n+k (2nk 1)]

  • Formatul intern n virgula mobila

    Cel mai mic numar nenul reprezentabil este:

    22k1+2 0.0 . . . 012 = 22k1n+k+3,

    n k cifre ale mantiseireprezentat: 0 0 . . . 0 0 . . . 0 1

    s (1 bit) c (k biti) f(n k 1 biti)Cel mai mare numar nenul reprezentabil este:

    22k11 1.1 . . . 12 = 22k1n+k (2nk 1),

    n k cifre ale mantiseireprezentat: 0 1 . . . 1 0 1 . . . 1

    s (1 bit) c (k biti) f(n k 1 biti)

  • Formatul intern n virgula mobila

    Numerele din intervalul (0, 22k1n+k+3) sunt prea mici pentru a fi

    reprezentate.

    Numerele din intervalul [22k1n+k+3, 22

    k1+3] sunt

    reprezentate cu pasul 22k1n+k+3

    .

    Pentru orice i 2k1 + 3, 2k1 2, numerele din intervalul[2i , 2i+1] sunt reprezentate cu pasul 2in+k+1.

    Numerele din intervalul [22k11, 22

    k1n+k (2nk 1)]sunt reprezentate cu pasul 22

    k1n+k.

  • Formatul intern n virgula mobila

    Ilustrare grafica:0 0 . . . 0 0 . . . 0 = 0

    s(1) c(k) f(n-k-1)... (numere nereprezentabile)

    0 0 . . . 0 0 . . . 0 1 = 22k1+2 0.0 . . . 012 = 22k1+2 2n+k+1s(1) c(k) f(n-k-1) = 22

    k1n+k+3

    (cel mai mic numar nenul reprezentabil)... pas 22k1n+k+3

    0 0 . . . 0 1 . . . 1 = 22k1+2 0.1 . . . 12s(1) c(k) f(n-k-1) = 22

    k1+2 (2nk1 1) 2n+k+1= 22

    k1n+k+3 (2nk1 1)pas 22

    k1n+k+3

    0 0 . . . 0 1 0 . . . 0 = 22k1+2 1.0 . . . 02 = 22k1+2s(1) c(k) f(n-k-1)... pas 22k1n+k+3

  • Formatul intern n virgula mobila

    0 0 . . . 0 1 1 . . . 1 = 22k1+2 1.1 . . . 12s(1) c(k) f(n-k-1) = 22

    k1+2 (2nk 1) 2n+k+1= 22

    k1n+k+3 (2nk 1)pas 22

    k1n+k+3

    0 0 . . . 0 1 0 0 . . . 0 = 22k1+2 10.0 . . . 02 = 22k1+3 1.0 . . . 02s(1) c(k) f(n-k-1) = 22

    k1+3

    ... pas 22k1n+k+40 0 . . . 0 1 0 1 . . . 1 = 22k1+3 1.1 . . . 12

    s(1) c(k) f(n-k-1) = 22k1+3 (2nk 1) 2n+k+1

    = 22k1n+k+4 (2nk 1)

    pas 22k1n+k+4

    0 0 . . . 0 1 1 0 . . . 0 = 22k1+3 10.0 . . . 02 = 22k1+4 1.0 . . . 02s(1) c(k) f(n-k-1) = 22

    k1+4

  • Formatul intern n virgula mobila

    ...

    0 1 . . . 1 0 1 0 . . . 0 = 22k12 1.0 . . . 02 = 22k12s(1) c(k) f(n-k-1)... pas 22k1n+k1

    0 1 . . . 1 0 1 1 . . . 1 = 22k121.1 . . . 12 = 22k12(2nk1)2n+k+1s(1) c(k) f(n-k-1) = 22

    k1n+k1 (2nk 1)pas 22

    k1n+k1

    0 1 . . . 1 0 0 . . . 0 = 22k1210.0 . . . 02 = 22k111.0 . . . 02 = 22k11s(1) c(k) f(n-k-1)... pas 22k1n+k

    0 1 . . . 1 0 1 . . . 1 = 22k111.1 . . . 12 = 22k11 (2nk 1)2n+k+1s(1) c(k) f(n-k-1) = 22

    k1n+k (2nk 1)(cel mai mare numar nenul reprezentabil)

  • Formatul intern n virgula mobila

    Observatie:

    Proiectantii standardului IEEE 754 au dorit o reprezentare a virgulei mobilecare sa poata fi prelucrata usor de comparatiile pentru ntregi, n special pentrusortare.

    Plasarea semnului n bitul cel mai semnificativ permite efectuarea rapida a

    testelor < 0, > 0, = 0.Plasarea caracteristicii naintea fractiei si faptul ca ea este un numar natural(indiferent daca exponentul este pozitiv sau negativ) ce creste odata cuexponentul permite sortarea numerelor n virgula mobila cu ajutorul circuitelorde comparare pentru ntregi, deoareace numerele cu exponenti mai mari parmai mari decat numerele cu exponenti mai mici.

    Asadar, reprezentarea IEEE 754 poate fi prelucrata cu ajutorul circuitelor decomparare pentru ntregi, accelerand sortarea numerelor n virgula mobila.Dealtfel, pe ilustrarea grafica de mai nainte se poate observa ca sirurile de biticresc n ordine lexicografica odata cu cresterea numerelor reale reprezentate,ceea ce corespunde cresterii interpretarilor acestor siruri ca ntregi fara semn.

  • Formatul intern n virgula mobila

    Pe aceeasi ilustrare grafica se mai poate constata ca succesorul lexicografic alsirului de biti prin care s-a reprezentat cel mai mare numar nenul reprezentabil:

    0 1 . . . 1 0 1 . . . 1 s(1) c(k) f(n-k-1)

    este sirul de biti prin care se reprezinta +:0 1 . . . 1 0 . . . 0

    s(1) c(k) f(n-k-1)

    ceea ce exprima ideea ca +> orice numar.

  • Formatele single si double

    Proiectarea unui sistem de reprezentare n virgula mobila presupune o buna

    alegere a valorilor n (dimensiunea formatului), k (dimensiunea campuluicaracteristica) si p 1 (dimensiunea campului fractie). Reamintim ca peste numarul de cifre semnificative considerate (prima este implicita, restul sunt

    stocate n campul fractie). Avem n = 1 + k + (p 1) = k + p.In general n este un multiplu al dimensiunii cuvantului de memorie (word) (ex:32 biti, 64 biti) si atunci pentru k si p trebuie gasit un compromis, deoareceun bit adaugat la unul dintre campuri trebuie luat de la celalalt.Cresterea lui p determina cresterea preciziei numerelor, n timp ce cresterea luik determina largirea domeniului de numere care pot fi reprezentate.Principiile de proiectare ale seturilor de instructiuni hardware ne nvata ca oproiectare buna are nevoie de compromisuri bune.

    Doua formate n virgula mobila descrise n standardul IEEE 754, care se gasestepractic n orice calculator conceput dupa anul 1980, sunt single si double (lorle corespund n limbajul C tipurile float si respectiv double).

  • Formatele single si double

    Formatul single (precizie simpla): n = 32, k = 8, p = 24

    Rezulta: Emin = 126, Emax = 127, bias = 127Intervalul de numere 0 reprezentabile este: [0, 2104 (224 1)]Cel mai mic numar nenul reprezentabil este:

    2126 0.0 . . . 012 = 2149,24 cifre ale mantisei

    reprezentat: 0 0 . . . 0 0 . . . 0 1 s (1 bit) c (8 biti) f(23 biti)

    Cel mai mare numar nenul reprezentabil este:

    2127 1.1 . . . 12 = 2104 (224 1),24 cifre ale mantisei

    reprezentat: 0 1 . . . 1 0 1 . . . 1 s (1 bit) c (8 biti) f(23 biti)

  • Formatele single si double

    Numerele din intervalul (0, 2149) sunt prea mici pentru a fireprezentate.

    Numerele din intervalul [2149, 2125] sunt reprezentate cu pasul2149.Pentru orice i 125, 126, numerele din intervalul [2i , 2i+1]sunt reprezentate cu pasul 2i23.Numerele din intervalul [2127, 2104 (224 1)] sunt reprezentatecu pasul 2104.

  • Formatele single si double

    Ilustrare grafica:0 0 . . . 0 0 . . . 0 = 0

    s(1) c(8) f(23)

    ... (numere nereprezentabile)0 0 . . . 0 0 . . . 0 1 = 2126 0.0 . . . 012 = 2126 223 = 2149

    s(1) c(8) f(23)(cel mai mic numar nenul reprezentabil)

    ... pas 21490 0 . . . 0 1 . . . 1 = 2126 0.1 . . . 12 = 2126 (223 1) 223

    s(1) c(8) f(23) = 2149 (223 1)pas 2149

    0 0 . . . 0 1 0 . . . 0 = 2126 1.0 . . . 02 = 2126s(1) c(8) f(23)

    ... pas 2149

  • Formatele single si double

    0 0 . . . 0 1 1 . . . 1 = 2126 1.1 . . . 12 = 2126 (224 1) 223s(1) c(8) f(23) = 2149 (224 1)

    pas 2149

    0 0 . . . 0 1 0 0 . . . 0 = 2126 10.0 . . . 02 = 2125 1.0 . . . 02 = 2125s(1) c(8) f(23)

    ... pas 21480 0 . . . 0 1 0 1 . . . 1 = 2125 1.1 . . . 12 = 2125 (224 1) 223

    s(1) c(8) f(23) = 2148 (224 1)pas 2148

    0 0 . . . 0 1 1 0 . . . 0 = 2125 10.0 . . . 02 = 2124 1.0 . . . 02 = 2124s(1) c(8) f(23)

  • Formatele single si double

    ...

    0 1 . . . 1 0 1 0 . . . 0 = 2126 1.0 . . . 02 = 2126s(1) c(8) f(23)

    ... pas 21030 1 . . . 1 0 1 1 . . . 1 = 2126 1.1 . . . 12 = 2126 (224 1) 223

    s(1) c(8) f(23) = 2103 (224 1)pas 2103

    0 1 . . . 1 0 0 . . . 0 = 2126 10.0 . . . 02 = 2127 1.0 . . . 02 = 2127s(1) c(8) f(23)

    ... pas 21040 1 . . . 1 0 1 . . . 1 = 2127 1.1 . . . 12 = 2127 (224 1) 223

    s(1) c(8) f(23) = 2104 (224 1)(cel mai mare numar nenul reprezentabil)

  • Formatele single si double

    Formatul double (precizie dubla): n = 64, k = 11, p = 53

    Rezulta: Emin = 1022, Emax = 1023, bias = 1023Intervalul de numere 0 reprezentabile este: [0, 2971 (253 1)]Cel mai mic numar nenul reprezentabil este

    21022 0.0 . . . 012 = 21074,53 cifre ale mantisei

    reprezentat: 0 0 . . . 0 0 . . . 0 1 s (1 bit) c (11 biti) f(52 biti)

    Cel mai mare numar nenul reprezentabil este

    21023 1.1 . . . 12 = 2971 (253 1),53 cifre ale mantisei

    reprezentat: 0 1 . . . 1 0 1 . . . 1 s (1 bit) c (11 biti) f(52 biti)

  • Formatele single si double

    Numerele din intervalul (0, 21074) sunt prea mici pentru a fireprezentate.

    Numerele din intervalul [21074, 21021] sunt reprezentate cu pasul21074.Pentru orice i 1021, 1022, numerele din intervalul [2i , 2i+1]sunt reprezentate cu pasul 2i52.Numerele din intervalul [21023, 2971 (253 1)] sunt reprezentatecu pasul 2971.

  • Formatele single si double

    Ilustrare grafica:0 0 . . . 0 0 . . . 0 = 0

    s(1) c(11) f(52)

    ... (numere nereprezentabile)0 0 . . . 0 0 . . . 0 1 = 21022 0.0 . . . 012 = 21022 252 = 21074

    s(1) c(11) f(52)(cel mai mic numar nenul reprezentabil)

    ... pas 210740 0 . . . 0 1 . . . 1 = 21022 0.1 . . . 12 = 21022 (252 1) 252

    s(1) c(11) f(52) = 21074 (252 1)pas 21074

    0 0 . . . 0 1 0 . . . 0 = 21022 1.0 . . . 02 = 21022s(1) c(11) f(52)

    ... pas 21074

  • Formatele single si double

    0 0 . . . 0 1 1 . . . 1 = 21022 1.1 . . . 12 = 21022 (253 1) 252s(1) c(11) f(52) = 21074 (253 1)

    pas 21074

    0 0 . . . 0 1 0 0 . . . 0 = 21022 10.0 . . . 02 = 21021 1.0 . . . 02 = 21021s(1) c(11) f(52)

    ... pas 210730 0 . . . 0 1 0 1 . . . 1 = 21021 1.1 . . . 12 = 21021 (253 1) 252

    s(1) c(11) f(52) = 21073 (253 1)pas 21073

    0 0 . . . 0 1 1 0 . . . 0 = 21021 10.0 . . . 02 = 21020 1.0 . . . 02 = 21020s(1) c(11) f(52)

  • Formatele single si double...

    0 1 . . . 1 0 1 0 . . . 0 = 21022 1.0 . . . 02 = 21022s(1) c(11) f(52)... pas 2970

    0 1 . . . 1 0 1 1 . . . 1 = 21022 1.1 . . . 12 = 21022 (253 1) 252s(1) c(11) f(52) = 2970 (253 1)

    pas 2970

    0 1 . . . 1 0 0 . . . 0 = 21022 10.0 . . . 02 = 21023 1.0 . . . 02 = 21023s(1) c(11) f(52)... pas 2971

    0 1 . . . 1 0 1 . . . 1 = 21023 1.1 . . . 12 = 21023 (253 1) 252s(1) c(11) f(52) = 2971 (253 1)(cel mai mare numar nenul reprezentabil)

    Formatul double are ca avantaj fata de formatul single atat domeniul mai mareal exponentului cat, mai ales, precizia mai mare, datorata mantisei mai mari.

  • Formatele single si double

    Exemplu: Sa se reprezinte n format single si double numarul realx = 4.75.

    Reprezentam x n baza 2:

    4 : 2 = 2 rest 02 : 2 = 1 rest 0 0.75 2 = 1.51 : 2 = 0 rest 1 0.5 2 = 1.0deci (4)2 = 100 deci (0.75)2 = 0.11

    Rezulta (x)2 = 100.11In notatia stiintifica normalizata (n baza 2) avem: x = 1.0011 22Deci:

    semnul = exponentul = 2mantisa = 1.0011

    In formatul single, deoarece 126 2 127, vom avea:s = 1c = (2 + 127)2 = (129)2 = 10000001f = 00110000000000000000000

  • Formatele single si double

    Deci reprezentarea binara a lui x ca single este:

    11000000100110000000000000000000

    Determinam si reprezentarea hexa a lui x ca single:

    1100 0000 1001 1000 0000 0000 0000 0000C 0 9 8 0 0 0 0

    deci reprezentarea hexa este:

    C0980000

  • Formatele single si doubleIn formatul double, deoarece 1022 2 1023, vom avea:

    s = 1c = (2 + 1023)2 = (1025)2 = 10000000001f = 0011000000000000000000000000000000000000000000000000

    Deci reprezentarea binara a lui x ca double este:

    1100000000010011000000000000000000000000000000000000000000000000

    Determinam si reprezentarea hexa a lui x ca double:

    1100 0000 0001 0011 0000 0000 0000 0000C 0 1 3 0 0 0 0

    0000 0000 0000 0000 0000 0000 0000 00000 0 0 0 0 0 0 0

    deci reprezentarea hexa este:

    C013000000000000

  • Formatele single si double

    Exemplu: Sa se determine valoarea x reprezentata de urmatorul formatsingle:

    11000000101000000000000000000000Identificam valorile campurilor componente:

    1 10000001 01000000000000000000000 s c f

    Deci:s = 1c = 10000001 = (27 + 1)2 = (129)2f = 01000000000000000000000

    Intrucat 0 < c < 28 1 = 255, rezulta (pentru single bias = 127):x = (1)1 2129127 1.010000000000000000000002 =

    = 22 (20 + 22) = 4 (1 + 0.25) = 4 1.25 = 5

  • Formatele single si double

    Observatie:

    Reprezentarile single si double sunt date multioctet si se supun acelorasiconventii de ordonare a octetilor n memorie ca si celelalte date.Reamintim: conventia de ordonare este fixata hardware pentru fiecarearhitectura si poate fi little endian (datele sunt reprezentate cu partea low laadresa mai mica) sau big endian (datele sunt reprezentate cu partea low laadresa mai mare); arhitectura Intel foloseste conventia little endian.Cand ilustram grafic continutul memoriei obisnuim sa desenam octetii cuadresele crescand spre dreapta si atunci, ntr-o arhitectura care folosesteconventia little endian, locatiile ce contin cele doua reprezentari din primulexemplu de mai devreme vor fi desenate astfel (un octet = doua cifre hexa):

    Locatia ce contine reprezentarea single C0980000 va fi desenata 00 00 98 C0

    Locatia ce contine reprezentarea double C013000000000000 va fi desenata00 00 00 00 00 00 13 C0

    In cazul registrilor se obisnuieste sa se deseneze bitii si octetii cu semnificatiacrescand spre stanga (asa cum se scriu numerele n matematica). Astfel, unregistru de 32 biti ce contine reprezentarea single C0980000 va fi desenat totC0980000

  • Reglementari IEEE 754

    Standardul IEEE 754 contine reglementari referitoare la:

    (1) Operatiile cu numere n virgula mobila.

    (2) Rotunjire si Controlul preciziei rotunjrii.

    (3) Infinit-uri, Nan-uri, zero-uri cu semn.

    (4) Exceptii.

    (5) Trap-uri.

    Prezentam n continuare cateva reglementari importante:

  • Reglementari IEEE 754

    (1) Operatiile implementate cu numere n virgula mobila sunt:- operatii aritmetice: adunare, scadere, nmultire, mpartire, aflare rest(reminder);- extragere radacina patrata;- rotunjirea la un ntreag reprezentat n virgula mobila;- conversie ntre diferite formate de virgula mobila;- conversie ntre formate de virgula mobila si formate de ntregi;- conversie binar zecimal;- comparatii;- n unele implementari se poate considera operatie si copierea fara schimbareaformatului.

    Cu exceptia conversiei binar zecimal, care este supusa unor constrangeri maislabe, toate operatiile sunt efectuate ca si cand ar produce mai ntai un rezultatintermediar exact (cu precizie infinita si domeniu nelimitat), iar apoi l-ar rotunji.

    Exista totodata particularitati legate de 0, si Nan-uri si exceptii cauzatede operanzi si rezultate exceptate.

  • Reglementari IEEE 754

    Operatii aritmetice: adunare, scadere, nmultire, mpartire, aflare rest(reminder):

    Se pot aplica unor operanzi de aceeasi dimensiune a formatului, iar n uneleimplementari si unor operanzi de dimensiuni diferite; formatul destinatieitrebuie sa fie de dimensiune cu cel al operanzilor (indiferent de controlulpreciziei rotunjirii); rezultatele se rotunjesc.

    Daca y 6= 0, restul (reminder) r = x REM y este definit (indiferent de modul derotunjire) prin relatia matematica r = x y n, unde n este ntregul cel maiapropiat de valoarea exacta x/y ; daca exista doi ntregi n a.. |n x/y | = 1

    2,

    atunci se alege n par. Astfel, restul este ntotdeauna exact. Daca r = 0,semnul sau va fi cel al lui x .Controlul preciziei rotunjirii nu se aplica operatiei reminder.

    Extragere radacina patrata:Este implementata pentru toate formatele de virgula mobila suportate.Dimensiunea formatului destinatie trebuie sa fie cea a operandului.Rezultatul este definit si are semn pozitiv pentru orice operand 0, cuexceptia faptului ca

    0 va fi 0; rezultatul se rotunjeste.

  • Reglementari IEEE 754

    Conversie ntre diferite formate de virgula mobila:Sunt implementate conversii ntre toate formatele de virgula mobila suportate.Daca conversia este spre un format cu precizie mai mica, rezultatul serotunjeste; daca este spre un format cu precizie mai mare, rezultatul este exact.

    Conversie ntre formate de virgula mobila si formate de ntregi:Sunt implementate conversii ntre toate formatele de virgula mobila si toateformatele de ntregi suportate.Conversia catre ntreg se efectueaza prin rotunjire.Conversia ntre ntregii reprezentati n virgula mobila si formatele de ntregi vafi exacta, n afara cazurilor cand se semnaleaza o exceptie (ex. overflow).

    Rotunjirea unui numar n virgula mobila la o valoare ntreagareprezentata n virgula mobila, n acelasi format.

    Se folosesc regulile uzuale de rotunjire, cu mentiunea ca atunci cand se aplicarotunjirea la cel mai apropiat (Round to Nearest), daca operandul nerotunjitse afla exact la jumatatea distantei ntre doi ntregi consecutivi, rezultatulrotunjit este par.

  • Reglementari IEEE 754 Conversie binar zecimal:Este implementata ntre cel putin unul dintre formatele de stringuri zecimale sitoate formatele de baza de virgula mobila suportate, pentru numere dinintervalele urmatoare (valorile stringurilor zecimale sunt M 10N):

    Format Zecimal Binar Binar ZecimalMaxM MaxN MaxM MaxN

    Single 109 1 99 109 1 53Double 1017 1 999 1017 1 340

    La intrare sunt adaugate/eliminate zerouri la M pentru a minimiza N; dacaM > MaxM, anumite implementari pot modifica cifrele semnificative dincolo dea 9-a pentru single, respectiv a 17-a pentru double, de obicei prin nlocuire cu0. Conversiile vor fi corect rotunjite pentru operanzi n intervalele urmatoare:

    Format Zecimal Binar Binar ZecimalMaxM MaxN MaxM MaxN

    Single 109 1 13 109 1 13Double 1017 1 27 1017 1 27

    Conversiile sunt monotone (cresterea valorii sursa nu va produce descrestereavalorii destinatie), iar cand se aplica rotunjirea la cel mai apropiat (Round toNearest) si se respecta precizia stringurilor zecimale de 9, respectiv 17 cifre,conversia binar zecimal binar este identitatea.

  • Reglementari IEEE 754 Comparatii:Sunt implementate comparatii ntre toate formatele de virgula mobila suportate(chiar si daca formatele operanzilor difera).Ele sunt ntotdeauna exacte si nu produc overflow/underflow.Doua valori se pot afla n 4 relatii mutual exclusive: mai mic, egal, mai mare,neordonat; ultima apare cand macar un operand este NaN; un NaN esteneordonat cu orice, inclusiv cu sine.Comparatiile vor ignora semnul lui 0 (deci +0 = 0).Rezultatul unei comparatii poate fi furnizat, n functie de implementare:- printr-un cod conditional ce identifica una din