Sunteți pe pagina 1din 36

Capitolul 1

NOIUNI DE BAZ DESPRE CALCULATOR

1.1 Arhitectura de baz a unui calculator


Calculatorul este o main programabil. Dou dintre principalele caracteristici ale unui calculator
sunt:
1. Rspunde la un set specific de instruciuni ntr-o manier bine definit.
2. Calculatorul poate executa o list prenregistrat de instruciuni, numit program.
Calculatoarele moderne sunt electronice i numerice.
Partea de circuite electrice i electronice precum i conexiunile fizice dintre ele se numete
hardware.
Totalitatea programelor precum i datele aferente acestor programe poart denumirea de
software.
Echipamente de ieire

Echipamente de stocare date


(HDD, FDD, CD-ROM, etc.)

UPC
Unitatea de procesare
i control Echipamente de intrare

Toate calculatoarele de uz general necesit urmtoarele componente hardware:


memorie: Permite calculatorului s stocheze, cel puin temporar, date i programe.
dispozitive de stocare externe: Permit calculatoarelor s stocheze permanent programe i mari
cantiti de date. Cele mai uzuale dispozitive de stocare extern sunt HDD (hard disk drives), FDD
(floppy disk drive) i CD-ROM (Compact Disk-Read Only Memory) sau CD-R/W (Compact Disk-
Read/Write).
dispozitive de intrare : n mod uzual sunt reprezentate de tastatur (keyboard) i de mouse.
Aceste dispozitive reprezint calea uzual de introducere a datelor i instruciunilor care gestioneaz
funcionarea unui calculator.
dispozitive de ieire: Reprezint modalitatea prin care calculatorul transmite utilizatorului
uman rezultatele execuiei programelor. Ecranul monitorului sau imprimanta sunt astfel de
dispozitive uzuale.
Unitatea de procesare i control (UPC) : Este partea principal a unui calculator deoarece
este componenta care execut instruciunile. n mod uzual aceast unitate de procesare i control
este reprezentat de un microprocesor care se plaseaz pe placa de baz (mainboard) a
calculatorului mpreun cu memoria intern RAM. n plus fa de aceste componente orice
calculator este prevzut cu o magistral (bus) prin care se gestioneaz modalitatea de transmitere a
datelor ntre componentele de baz ale calculatorului. Magistrala reprezint o colecie de trasee
electrice care leag microprocesorul de dispozitivele de intrer/ieire i de dispozitivele
interne/externe de stocare a datelor. Putem distinge magistrala de date, magistrala de adrese i
magistrala de comand i control.
Calculatoarele pot fi n general clasificate dup dimensiuni sau putere de calcul. Nu se poate
face ns la ora actual o distincie net ntre urmtoarele categorii de calculatoare:

1
PC (Personal Computer): Un calculator de dimensiuni mici, monoutilizator (single-user),
bazat pe un microprocesor. n plus acesta este dotat standard cu tastatur, mouse, monitor i
dispozitive periferice de stocare a datelor.
staii de lucru (workstation): Un calculator monoutilizator de mare putere. Aceasta este
asemntor unui PC dar are un microprocesor mai puternic i un monitor de nalt calitate
(rezoluie mai mare).
minicalculator (minicomputer): Un calculator multiutilizator (multi-user) capabil s lucreze
simultan cu zeci sau chiar sute de utilizatori.
mainframe: Aun calculator multiutilizator capabil s lucreze simultan cu sute sau chiar mii de
utilizatori.
supercomputer: Un computer extrem de rapid care poate executa sute de milioane de operaii
ntr-o secund.
1.2 Sisteme de operare
Sistemul de operare este cel mai important program care ruleaz pe un calculator. Orice
calculator de uz general este dotat cu un sistem de operare care permite execuia altor programe.
Sistemele de operare execut operaiuni de baz precum: recunoaterea unei intrri de la tastatur
(preluare caracter), trimiterea unui caracter pentru afiare pe ecranul monitorului, gestionarea
fiierelor i a directoarelor pe disc (floppy-disk sau hard-disk), controlul fluxului de date cu
echipamentele periferice ca drivere de disc sau imprimante.

Aplicaie

Disk-drive

Sistem de
operare
Mouse
Monitor

Tastatur Imprimant

Sistemul de operare al unui calculator este partea de software necesar i suficient pentru
execuia oricror alte aplicaii dorite de utilizator. Un calculator nu poate funciona dect sub
gestiunea unui sistem de operare. Orice aplicaie lansat n execuie de ctre un utilizator apeleaz
la resursele puse la dispoziie de ctre sistemul de operare. Sistemul de operare interfaeaz
calculatorul cu operatorul uman de o manier ct mai transparent cu putin astfel nct utilizatorul
nu trebuie s fac eforturi mari de adaptare dac lucreaz cu arhitecturi hardware diferite.
Pentru sisteme mai mari, sistemele de operare au responsabiliti i capabiliti i mai mari. Ele
acioneaz ca un gestionar al traficului de date i al execuiei programelor. n principal sistemul de
operare asigur ca diferite programe i diferii utilizatori s nu interfereze unele cu altele. Sistemul
de operare este de asemenea responsabil cu securitatea, asigurnd inaccesibilitatea persoanelor
neautorizate la resursele sistemului.
Sistemele de operare se pot clasifica dup cum urmeaz:
multi-user: Permit ca doi sau mai muli utilizatori s ruleze n acelai timp programe
(utilizatori concureni). Anumite sisteme de operare permit sute sau chiar mii de utilizatori
concureni.
multiprocesor: Permit execuia unui program pe mai mult de un microprocesor.
multitasking: Permit mai multor programe s ruleze n acelai timp (execuie concurent).
2
multithreading: Permit diferitelor pri ale unui program s fie executate concurent.
timp real (real time): Rspund instantaneu la diferite intrri. Sistemele de operare de uz
general, ca DOS sau UNIX nu sunt sisteme de operare de timp real.
Sistemele de operare furnizeaz o platform software pe baza creia alte programe, numite
programe de aplicaie, pot rula (pot fi executate). Programele de aplicaie trebuie s fie scrise
pentru a rula pe baza unui anumit sistem de operare. Alegerea unui anumit sistem de operare
determin n consecin mulimea aplicaiilor care pot fi rulate pe calculatorul respectiv. Pentru PC-
uri, cele mai populare sisteme de operare sunt DOS, OS/2 sau Windows, dar mai sunt disponibile i
altele precum Linux.
Ca utilizator se interacioneaz cu sistemul de operare prin intermediul unor comenzi. Spre
exemplu, sistemul de operare DOS accept comenzi precum COPY sau RENAME pentru a copia
fiiere sau pentru a le redenumi. Aceste comenzi sunt acceptate i executate de o parte a sistemului
de operare numit procesor de comenzi sau interpretor de linie de comand.
Interfaele grafice cu utilizatorul (GUI, Graphical user interfaces) permit introducerea unor
comenzi prin selectarea i acionarea cu mouse-ul a unor obiecte grafice care apar pe ecran. Spre
exemplu, sistemul de operare Windows are un desktop ca intefa garfic cu utilizatorul. Pe acest
desktop (birou) se afl diferite simboluri grafice (icoane, icons) ataate diferitelor aplicaii
disponibile pe calculatorul respectiv. Utilizatorul are multiple posibiliti de configurare a acestei
intefee grafice.
1.2.1 Sisteme de operare pentru PC-uri
Din punct de vedere istoric, primul sistem de operare comercializat pe scar larg a fost MS-
DOS. Odat cu creterea capabilitilor hardware ale calculatoarelor, acesta s-a transformat, prin
dezvoltri succesive, n Windows.
1.2.1.1 DOS
Prezentarea sistemului de operare MS-DOS
Sistemul de operare MSDOS (MicroSoft Disk Operating System) este destinat gestionrii
resurselor software si hardware ale microcalculatoarelor cu o arhitectura de tip IBM PC sau
compatibil cu aceasta i echipate cu procesoare 8086 sau 80x86, Pentium.
MSDOS este un sistem de operare monouser, mono-tasking, ceea ce nseamn c el permite
folosirea calculatorului la un moment dat de ctre un singur utilizator, executnd un singur program
de aplicaie, cu excepia comenzii PRINT, care poate fi lansat cu orice comand MS DOS.
Principalele funciuni ndeplinite de MS DOS se pot grupa astfel:
Interpretarea i execuia comenzilor;
ncrcarea, lansarea i controlul execuiei programelor;
Comanda i controlul dispozitivelor periferice;
Gestiunea fiierelor de pe disc;
Semnalizarea, diagnosticarea i tratarea erorilor;
Funcii apelabile la diverse nivele oferind diverse faciliti utilizatorului.
Sistemul de operare MS DOS asigur o interfa simpl ntre utilizator i resursele software
i hardware ale sistemului de calcul, fiind uor de exploatat i avnd urmtoarele avantaje:
Diversitate mare a resurselor software;
Mecanism evoluat de detectare i tratare a erorilor;
Interfa utilizator simpl, uor accesibil, comenzile sunt uor de nvat i utilizat;
Modularitatea; este conceput ntr-o manier care ncurajeaz descompunerea programelor
complexe n module mai mici cu funcii bine definite;
Gestioneaz o structura de fiiere eficient avnd o organizare ierarhic arborescent;
Gestioneaz data i ora curent i le insereaz n informaiile legate de fiiere la crearea i
modificarea acestora;
Ofer posibilitatea conectrii unei mari varieti de dispozitive periferice.
Conform specificaiilor firmelor IBM i Microsoft sistemul de operare MS DOS este
rezultatul compunerii urmtoarelor elemente:
BIOS (Basic Input/Output System), rezident n memoria ROM, care conine:

3
un sistem de proceduri pentru comanda i controlul execuiei operaiunilor de intrare/ieire la
nivel fizic pentru toate echipamentele periferice din configuraia standard
programe de testare sumar a memoriei RAM, a adaptoarelor pentru tastatur, monitor i
discuri
programe pentru determinarea i actualizarea configuraiei hardware a sistemului prin
citirea/scrierea datelor din/n memoria CMOS
un program prencrctor (loader) al nregistrrii BOOT pentru pre-ncrcarea sistemului de
operare de pe discul sistem etc.
BIOS (Basic Input/Output System) a fost mprit n dou pri:
1) Partea de sistem de operare BIOS-OS a BIOS este partea standardizat, neparticularizat n
funcie de varianta constructiv a calculatorului. Fiecare operaie de I/O care se poate executa are
varianta standard de apelare prin parametri. n acest fel productorii de aplicaii (programe) nu
trebuie s tie detalii despre varianta constructiv, fizic a calculatorului, ci numai maniera
standardizat de apelare a rutinelor de I/O (parametrii i adresa).
2) Partea de ROM-BIOS este particularizat la varianta constructiv, cunoscut n detaliu
numai de productorul calculatorului i care "arde" n PROM aceast parte a BIOS-ului. Fiecare
rutin de I/O are prevzut un punct de intrare (o adres) cunoscut de BIOS. Transparena variantei
constructive a calculatorului fa de utilizator se datoreaz faptului c BIOS-OS este comun tuturor
compatibilelor IBM-PC, iar ROM-BIOS difer de la calculator la calculator.
Programul pentru ncrcarea sistemului de operare de pe disc se afl pe pista 0 si sectorul 1 (zona
de boot) a oricrui discsistem. La harddisk-uri, datele din aceast zon descriu structura de
partiii din care se determin partiia activ.
Programul IO.SYS care conine extensii ale BIOS-ului, permite actualizri ale programului
BIOS, corespunztoare noilor versiuni de sisteme de operare, precum i extinderea configuraiei
standard prin adugarea de noi echipamente periferice fr a fi nevoie s se modifice ROM-ul
care conine BIOS-ul.
Programul MSDOS.SYS care conine procedurile (ntreruperi i funcii) de tratare a operaiilor
de intrare/ieire la nivel logic.
COMMAND.COM care reprezint interpretorul de comenzi, prin intermediul cruia se
realizeaz primul nivel de dialog al sistemului cu utilizatorul.
Lansarea n execuie a sistemului de operare
Pentru ncrcarea sistemului de operare se procedeaz astfel:
- cnd calculatorul nu e alimentat memoria RAM nu conine nimic, singurele informaii sunt n
CMOS i n ROM, n afara discurilor.
- n ROM-BIOS se afl un program numit "loader", prencrctor, care lanseaz operaia de
"bootstrap", adic operaia de ncrcare a sistemului de operare.
- IP este ncrcat automat, hard, cu adresa primei instruciuni din programul loader (ncrctor)
care se afl n EPROM-uri.
Adresa nceput
Microprocesor Program
program loader
loader

Registrul IP
(Istruction Pointer)
Adresa loader ROM

Adresa de nceput a programului loader se ncarc n registrul de instruciuni IP al


microprocesorului i se lanseaz n execuie programul loader localizat n ROM
- Loader-ul se lanseaz n execuie:

4
1) Testeaz configuraia hard dac funcioneaz corect (POST-Power On Self Test): se
testeaz unitatea central, memoria RAM, tastatura, CMOS, monitorul, unitile de discuri
magnetice. De fapt se testeaz configuraia minimal de funcionare a calculatorului.
2) ncarc n RAM la o adres prestabilit primul sector al primei piste al primului disc
ntlnit n configuraie.
3) Lanseaz programul respectiv, coninut n acest sector numit sector de "boot". Aceste
program se mai numete i BOOTSTRAP. Programul, n funcie de starea sistemului de
calcul, ncarc ulterior n memoria RAM toate componentele sistemului de operare.

Adresa nceput
program bootstrap Programul
Microprocesor Bootstrap ncrcat din
prima pist i primul Harddisk implicit
sector al discului implicit

Registrul IP
(Istruction Pointer)
Adresa bootstrap
RAM

Adresa nceput
Sistem Operare Sub controlul bootstrap
M icroprocesor Sistemul de O perare se
ncarc de pe disc n Harddisk
memoria RAM i se
lanseaz n execuie

Registrul IP
(Istruction Pointer)
Adresa SO
RAM

Configurrile se fac verificnd dac exist fiierul CONFIG.SYS n directorul rdcin pe


discul de "boot"; dac este gsit se execut comenzile din el, iar dac mai nu se trece departe.
Lansarea n execuie a unor comenzi utilizator se face verificnd existena fiierului
AUTOEXEC.BAT n directorul rdcin pe discul de "boot"; dac exist se execut, iar doar dac
nu se execut anumite comenzi (DATE, TIME); ulterior se d controlul CCP.
Se afieaz apoi prompterul, ateptndu-se o comand din partea utilizatorului. Interpretorul
de comenzi prelucreaz comenzile DOS, acionnd ca o interfa ntre utilizator i sistemul de
operare.
Organizarea fiierelor sub MS-DOS
Una din funciile importante ale sistemului de operare este aceea care asigur gestionarea
datelor pe suporturi de memorie extern. Pentru a realiza aceast funciune datele si programele se
memoreaz pe suportul magnetic ntr-o form care permite manevrarea lor ca entiti. Acestea se
numesc fiiere.
n sistemul de operare MS DOS, spaiul de memorare al unui disc este mprit n patru zone
distincte, primele trei zone, numite zone sistem, sunt rezervate i iniializate la formatarea discului.
- Prima zon este destinat programului de ncrcare a sistemului (boot)
- A doua zona se numete FAT (File Allocation Table) i conine date referitoare la alocarea
fiierelor pe disc.
- A treia zon conine directorul rdcin (root) i informaia despre fiierele care i aparin.

5
- A patra zon (cea mai mare) conine fiierele grupate n directoare.
Comenzile sistemul de operare MS DOS
Comenzile sistemului de operare MSDOS sunt de dou tipuri: interne i externe.
Comenzile interne se execut imediat deoarece fac parte din sistemul de operare DOS i sunt
ncrcate odat cu acesta. Ele sunt incluse n fiierul COMMAND.COM i sunt executate imediat
dup tastarea lor.
Comenzile externe sunt rezidente pe disc ca programe executabile. Ele sunt reprezentate de
orice fiier care are extensia .COM, .BAT sau .EXE.
Programele create de utilizatori, scrie n limbaje de nivel nalt, vor deveni fiiere EXE i vor fi
comenzi externe pentru MS-DOS.
Pentru o comand extern nu este necesar tastarea extensiei. n cazul existenei mai multor
fiiere cu acelai nume dar extensii diferite, sistemul va lansa n execuie numai unul dintre ele
respectndu-se ordinea de prioritate: .COM, .EXE, .BAT.
Cele mai utilizate comenzi DOS sunt:
Comanda DIR permite afiarea coninutului unui DIRECTOR.
dir -afieaz coninutul directorului curent
dir/p -afieaz coninutul directorului curent din pagin n pagin
dir/w -afieaz coninutul directorului curent, compactat pe ecran
dir/o:n -afieaz fiierele n ordine alfabetic, dup nume
dir/o:e -afieaz fiierele n ordine alfabetic, dup extensie
Comanda TYPE permite afiarea coninutului unui fiier.
Sintaxa:
C:\TYPE nume.ext - afieaz pe ecran coninutul fiierului specificat.

Comanda COPY permite copierea unuia sau mai multor fiiere sau directoare.
Comanda MD creeaz un nou director.
Sintaxa:
md numedirector - creeaz un director nou n directorul curent.
Alt form pentru comand: mkdir.
Comanda RD permite distrugerea (tergerea) unui director care nu mai conine nici un fiier.
nainte de a se distruge un director, fiierele din el trebuie s fie terse.
Sintaxa:
rd numedirector - distruge directorul specificat, care nu mai conine nici un fiier.
Comanda TREE afieaz structura de directoare a unui disc pornind din punctul specificat
Sintaxa:
tree [d:]_[director]
Comanda DEL permite tergerea unui fiier sau a mai multor fiiere n grup.
Sintaxe:
del nume.ext - terge directorul specificat
del *.ext - terge toate fiierele cu extensia specificat
del _nume.* - terge toate fiierele cu numele specificat
del *.* - terge toate fiierele din directorul curent
Alt form- ERASE
Comanda CD produce schimbarea directorului curent din prompter.
Sintaxa:
cd numedirector - face trecerea de la directorul curent existent n prompter, ctre un alt director,
aflat pe un nivel superior din structura de directoare.
cd . . - face trecerea de la directorul curent, existent n prompter, ctre directorul anterior din
prompter, acesta devenind noul director curent.
Comanda REN permite redenumirea unui fiier, putndu-se modifica numele i extensia.
Sintaxa:

6
ren numeV.extV numeN.extN - schimb fiierul cu numele i extensia veche cu un alt nume sau
extensie, specificate de utilizator.
Alt form: RENAME.
1.2.2 Sistemul de operare Windows
Acest sistem de operare, folosit la ora actual pe majoritatea PC-urilor, este conceput ca un
sistem de operare multitasking. n acest fel se pot lansa n execuie simultan mai multe aplicaii care
pot chiar coopera.
Iniial sistemul de operare (SO) standard a fost MS-DOS; PC-ul era similar cu un calculator
cu microprocesor Intel i SO MS-DOS. Vom descrie n continuare un scurt istoric al evoluiei
acestui sistem de operare.
Windows 3.x
n 1990 a nceput s se foloseasc modul protejat la 80386 prin Windows 3.0, oferind
memorie extins utilizatorilor.
La pornirea calculatorului se ncarc MS-DOS, peste acesta se ncarc Windows care ofer un
mediu de operare grafic i faciliti multitasking.
O aplicaie (task) care d eroare poate determina blocarea sistemului pentru c toate aplicaiile
folosesc i un program (cod) comun al sistemului.
Windows 3.x este un SO pe 16 bii, deci segmentele de memorie au maxim 64 KB.
Pentru trecerea la aplicaii pe 32 de bii Microsoft ofer programe speciale (WINMEM32, i
ulterior Win32s).
Nu exist faciliti de integrate n SO pentru lucru n reea. Se utilizeaz faciliti de reea
oferite de programele Novell rulate sub Windows.
Windows 3.1 cere un calculator cu un procesor cel puin 80286 i cel puin 1MB RAM; recomandat
este 80386 cu 4MB.
Windows for Workgroups 3.11
S-au introdus faciliti pentru lucrul n reea. S-a introdus accesul pe 32 de bii la fiierele de
pe discul dur ceea ce a crescut foarte mult viteza de lucru. Configuraia minim este un 80386 cu 4
MB RAM, dar recomandabil este cel puin 8 MB RAM.
Windows NT 3.5
Exist dou variante: una pentru staia de lucru (un calculator dintr-o reea) i alta pentru
serverul reelei (calculatorul central care coordoneaz reeaua).
Este primul sistem de operare propriu-zis pentru c nu are nevoie de instalarea iniial a
sistemului de operare MS DOS. Este un sistem de operare pe 32 de bii. Cerinele principale au fost
sigurana n funcionare i protecia datelor, nu viteza de lucru.
Nu suport modul "Plug and Play", dar componentele hard se adaug relativ uor. Conine
servicii integrate pentru lucrul n reea.
Necesit cel puin 16 MB RAM, dar recomandabili sunt 32 MB RAM.
Windows 95
Nu are nevoie de instalarea anterioar a MS-DOS.
Windows 95 este un sistem de operare pe 32 de bii.
Aplicaiile MS-DOS sau Windows pe 16 bii pot fi rulate pe Windows 95, dar n acest mod nu
se beneficiaz de viteza oferit de Windows 95 care gestioneaz mai bine cantiti mari de date. i
aici eroarea unei aplicaii conduce la blocarea ntregului sistem.
Interfaa grafic cu utilizatorul este schimbat faa de versiunile anterioare, mult mai intuitiv
i uor de accesat folosind un mouse.
Windows 95 ofer faciliti net superioare de lucru n reea i multimedia (sunet i grafic) precum
i Plug and Play complet automatizat.
Se cere teoretic cel puin un 80386Dx cu 4MB RAM, practic cel puin 80486 cu 8 MB RAM,
se recomand ns 16 MB RAM.
Windows NT Workstation 4.0
Windows NT Workstation 4.0 are aceeai interfa point-and-click ca i Windows 95. Este un
sistem de operare desktop PC foarte fiabil. Conform SOFRES Intersearch, Windows NT

7
Workstation 4.0 are o probabilitate de trei ori mai mic dect Windows 95 de a nregistra blocri i
cderi ale sistemului.
Nivelul nalt de securitate al Windows NT Workstation 4.0 este furnizat att mediilor de sine
stttoare ct i celor conectate, indiferent de sistemul de operare pentru reele. Cuprinde, de
asemenea, capaciti mergnd de la resurse de reea bazate pe certificare, pn la protejarea la nivel
de fiier, pentru a preveni atacurile din afar (sau din interior).
n Windows NT Workstation, toate aplicaiile ruleaz n spaii distincte de memorie, ceea ce
permite nchiderea unei aplicaii deteriorate fr s fie necesar repornirea calculatorului.
Windows NT Workstation 4.0 Peer Web Services permite, chiar la simpla instalare,
configurarea unei reele intranet cu pn la 10 conexiuni simultane.
Windows NT Server 4.0
Este dotat cu Microsoft Internet Information Server 4.0, conexiuni TCP/IP simultane
nelimitate, securitate pentru prevenirea accesului neautorizat la sistem i Microsoft Message
Queuing Server - toate sunt integrate i dedicate Internet.
Cerinele sistemului sunt:
- sisteme Intel i compatibile: procesoare la 486/33 MHz, Pentium, Pentium Pro, sau mai rapide;
- memorie - 16 MB
- hard disk minim 125 MB disponibili.
Windows 98
Windows 98 aduce mbuntiri remarcabile ale sistemului. Pornirea aplicaiei este cu 36%
mai rapid dect n Windows 95, iar Windows Maintenance Wizard execut automat funciile de
ajustare a sistemului, mrind eficiena utilizatorilor.
Suportul pentru MMX, AGP i DirectX API asigur grafica 3-D rapid. Suportul pentru DVD
i standardele USB permit utilizatorilor s foloseasc de ultimele periferice compatibile Plug and
Play.
Cerine minime de sistem:
- calculator - 486DX/66-MHz sau mai rapid
- memorie - 24 MB (mai mult memorie mbuntete performana)
- hard disk - 140 MB - 315 MB.
Windows 2000 Professional
Windows 2000 Professional combin uurina utilizrii sistemului de operare Windows 98 cu
simplitatea administrrii, fiabilitatea i securitatea sistemului de operare Windows NT.
Sistemul de criptare a fiierelor pstreaz fiierele utilizatorilor n siguran prin criptarea lor
pe hard-disk.
Permisiunile de accesare a hard-disk-ului sunt mai stricte datorit NT File System (NTFS 5.0).
Cu Encrypting File System (EFS), Windows 2000 protejeaz datele de pe discul hard al unui
calculator. EFS, care face parte din sistemul de fiiere Windows NT, cripteaz fiecare fiier cu o
cheie generat aleator. Procesele de criptare i decriptare sunt transparente pentru utilizator.
Windows 2000 Professional este prima versiune de Windows NT care ofer suport Plug and
Play, precum i suport multiplu pentru sisteme de fiiere FAT, FAT32 i NTFS.
Performanele sunt mai mari dect Windows 98. Cu 64 MB de memorie, Windows 2000 este
n medie cu 25% mai rapid dect Windows 98. Deoarece se bazeaz n ntregime pe o arhitectur pe
32 de bii, utilizatorii pot rula mai multe programe i realiza mai multe sarcini simultan. Adugarea
de memorie suplimentar i a unui procesor i mbuntete i mai mult performana. Windows
2000 suport pn la 4 GB de RAM i multi-procesare simetric cu 2 ci.
Windows 2000 permite unui numr de maxim 10 calculatoare s partajeze simultan o singur
conexiune la Internet - fie prin dial-up fie n band larg.
Windows 2000 Server
Ofer n plus fa de Windows 2000 urmtoarele faciliti:
Protecia fiierelor Windows: mpiedic ca noile instalri de soft s nlocuiasc fiiere sistem
eseniale.

8
Echilibrarea sarcinii n reea: Pe Web sau pe servere Terminal Services, n eventualitatea
cderii hard sau soft a unui server sarcinile de lucru se redistribuie ntre serverele rmase n mai
puin de 10 secunde.
Partajarea conexiunii Internet: Permite mai multor utilizatori s partajeze o singur
conexiune Internet extern facilitnd conectarea la Internet.
Windows Telephony Applications Programming Interface (TAPI) 3.0
TAPI este un nivel de abstractizare software care permite aplicaiilor software s lucreze cu o
varietate larg de sisteme de telefonie pentru a oferi mai multe opiuni i o mai mare flexibilitate.
TAPI 3.0 adaug suport pentru media-difuziune i suport mai bun pentru telefonie IP prin
nglobarea de faciliti H.323 IP Multicast, bazndu-se pe suportul deja existent pentru aplicaii de
telefonie client-server tradiionale, cum ar fi centre de apel telefonic, rspuns vocal interactiv. Iar cu
noua arhitectur Component Object Model a lui TAPI putei s v facei aplicaia accesibil
telefonic folosind o varietate de limbaje de programare.
Repornire automat: Putei configura serviciile din sistemul de operare, s reporneasc
automat dac se blocheaz.
Arborele de oprire a proceselor: Posibilitatea de oprire a tuturor proceselor legate de un
proces sau de o aplicaie eronat fr a reboot-a sistemul.
Interoperabilitate ridicat cu calculatoarele client: Suport sistemele de operare Windows
NT Workstation, Windows 9x, Windows 3.x, Macintosh i Unix. Suportul TCP/IP Appleshare
mbuntete partajarea resurselor pentru sistemul de operare Macintosh.
Backup i recuperare: Facilitile de backup i recuperare uureaz backup-ul datelor i apoi
recuperarea acestora n eventualitatea unei cderi a discului hard. Windows 2000 permite backup-ul
ntr-un singur fiier pe un disc hard i pe medii cu band.
Windows Millenium Edition (Me)
Ofer n plus fa de Windows 2000 Server urmtoarele faciliti:
Multimedia Center. Windows Movie Maker poate sa nregistreze un video-clip de la o camer de
luat vederi sau s importe un film dintr-un fiier care poate fi ulterior mprit n clipuri mai mici ce
pot fi salvate. Windows Image Acquisition este folosit pentru a prelua i edita imagini de pe
dispozitive externe de achiziie imagine (scannere, aparate de fotografiat, etc) Noul Windows
Media Player 7 suport o gam foarte larg de formate audio i video, include un tuner pentru
posturi radio de pe Internet i un utilitar de transfer al fiierelor audio ctre dispozitive audio
portabile sau ctre dispozitive ce ruleaz Windows CE.
Hibernare. Este o alt facilitate preluat de la Windows 2000 i care scurteaz foarte mult procesul
de nchidere i pornire al calculatorului. n momentul n care alegem opiunea de hibernare, sistemul
de operare salveaz ntreaga memorie pe hard-disk i oprete sistemul. La repornire sistemul
pornete mult mai rapid i aplicaiile cu care lucram au rmas deschise.
Reeaua. n cadrul procesului de instalare a reelei se pot partaja fiierele, imprimantele i
conexiunea la Internet. Tot n cadrul aceluiai proces se poate crea o dischet ce poate fi folosit pe
calculatoare cu sisteme de operare mai vechi (Windows 9x) pentru a beneficia de noile faciliti ale
reelei oferite de Windows Me.
Microsoft Windows XP
Windows XP mbin perfect cele mai bune caracteristici: fiabilitatea codului de baz al
sistemului Windows 2000 combinat cu cele mai bune caracteristici ale sistemelor de operare
Windows 95/98/Millennium Edition.
Windows XP este creat pe tehnologia Windows 2000, care l face s fie un sistem de operare
foarte stabil. Cu faciliti ca Internet Connection Firewall, care protejeaz utilizatorii de accesul
neautorizat la calculatorul lor cnd navigheaz pe Internet, pn la facilitatea System Restore care
menine stabilitatea sistemului, Windows XP va fi mult mai sigur dect oricare alt versiune
Windows de pn acum.
Mediul Multi-User se adreseaz nevoilor specifice mai multor utilizatori care partajeaz
acelai calculator sau resursele acestuia. Noi caracteristici, cum ar fi Fast User Switching, permit

9
schimbarea rapid a utilizatorilor fr a fi necesar deconectarea acestora i partajarea uoar a unui
singur calculator fr a nchide aplicaiile unul altuia sau a schimba propriile setri desktop.
Remote Assistance asigur posibilitatea de a cere asisten securizat sau suport profesional.
Ofer suport pentru inscripionarea CD-urilor.
Cerine sistem:
Calculator: se recomand procesor la 300MHz sau mai rapid; 233 MHz minim cerut; procesor din
familia Intel Pentium/Celeron, familia AMD K6/Athlon/Duron, sau procesor compatibil.
Memorie: Se recomand 128MB de RAM sau mai mult (64MB minim necesari; poate limita
performana sau anumite caracteristici)
Hard Disk 1.5 GB spaiu liber pe hard disk. Dac se instaleaz n reea, este necesar spaiu liber
adiional pe hard disk. Sunt recomandate i o unitate CD-ROM sau DVD-ROM, precum i un
monitor cu afiaj Super VGA (800 x 600) sau monitor sau adaptor video cu rezoluie mai mare
Cu numele de cod anterior "Whistler Server", familia de produse Windows .NET Server este
generaia urmtoare a seriei de sisteme de operare Windows Server.
1.2.3 Nucleul (kernel) unui sistem de operare
Kernel-ul (miez, nucleu, parte esenial) reprezint modulul central al unui sistem de operare.
Este partea sistemului de operare care se ncarc prima i rmne n memoria principal (RAM) a
calculatorului pe tot parcursul funcionrii acestuia. Deoarece este rezident n memorie este
important ca acest nucleu al sistemului de operare s fie de dimensiuni ct mai mici cu putin
pentru ca restul de memorie RAM s fie la dispoziia aplicaiilor utilizatorului n proporie ct mai
mare. Kernel furnizeaz serviciile eseniale cerute de alte componente ale sistemului de operare
precum i de aplicaiile ce ruleaz la un moment dat. n mod uzual kernel este responsabil de
gestiunea memoriei (memory management), de gestionarea proceselor i task-urilor, precum i de
gestiunea fiierelor pe disc.
Kernel32.dll este biblioteca cu legare dinamic (DLL, Dynamic Link Library) pe 32 de bii
aflat inclus n kernel-ul sistemului de operare Windows. Aceast bibliotec cuprinde funciile de
nivel inferior ale sistemului de operare, este responsabil de gestiunea memoriei, de operaiile de
intrare/ieire i de gestiunea ntreruperilor.
La ncrcarea sistemului de operare Windows, kernel32.dll se ncarc ntr-un spaiu de
memorie protejat astfel nct nici o alt aplicaie nu poate avea acces n aceast zon de memorie. n
mod cu totul accidental utilizatorul poate ntlni mesajul invalid page fault generat tocmai de o
ncercare nepermis a unui program sau aplicaii de a accede n zona de memorie protejat alocat
kernel32.dll. Cteodat aceast eroare este cauzat de un program sau o aplicaie particular iar
altdat este provocat de aplicaii sau programe concurente.
Dac problema apare la rularea unei singure aplicaii, atunci este nevoie s nlocuim acea
aplicaie. Dac eroarea apare la execuia concurent a mai multor aplicaii sau la accesul unor fiiere
multiple, atunci eroarea este cauzat de o proast funcionare a hardware-ului.
n afar acestui nucleu de baz, sistemul de operare Windows mai cuprinde:
User32.dll, care manipuleaz funcii de gestiune a sistemului, ca, spre exemplu, manipularea
mesajelor, a temporizrilor, a meniurilor sau a resurselor sistemului de calcul.
GDI32.dll, care manipuleaz biblioteca de interfa grafic (GDI, Graphics Device
Interface) a sistemului de operare. Aceast bibliotec conine funcii pentru dispozitivele de
ieire ca cele pentru desenare, contextul de afiare sau gestiunea fonturilor.
Comctl32.dll, care manipuleaz poriuni ale interfeei grafice cu utilizatorul (GDI,
Graphical User Interface) precum toolbars, text boxes, scroll bars, etc.
1.2.4 Aplicaii, procese i task-uri
O aplicaie reprezint un program sau un grup de programe proiectat pentru utilizatorul final
al calculatorului.
Programul reprezint un set de instruciuni pentru calculator. Acest set este complet i de
sine-stttor i este folosit pentru a ndeplini anumite task-uri. Un sinonim pentru program este
termenul de aplicaie.

10
Un proces (task) este asociat unui program lansat n execuie. Termenul se mai folosete
cteodat ca un sinonim pentru task. De asemenea se mai ntlnte n informatic i termenul de
procesare a datelor care se refer la efectuarea unor operaii utile asupra datelor.
Task este un concept al sistemului de operare care se refer la o combinaie dintre un program
n execuie i un catalog de informaii construit de sistemul de operare pentru a gestiona eficient
funcionarea programului respectiv. Spre exemplu, n sistemul de operare Windows exist la baza
desktop-ului aa-numita taskbar. De fiecare dat cnd se lanseaz n execuie un program apare n
zona taskbar o legtur cu programul lansat n execuie, deci la lansarea n execuie a unui program
sistemul de operare creaz un nou task pentru el. De cte ori ne uitm la taskbar putem vedea cte i
care programe sunt lansate n execuie.
Task-ul este pentru program ca un plic pentru o scrisoare: el identific programul cu un
numr de task (task number) i i ataeaz i alte informaii necesare unei bune funcionri ntr-un
mediu multitasking.
Diferite sisteme de operare, inclusiv UNIX, OS/2 sau Windows, sunt capabile s ruleze mai
multe task-uri n acelai timp, fiind numite sisteme de operare multitasking.
n majoritatea sistemelor de operare exist o coresponden unul-la-unul (biunivoc) ntre task
i program (aplicaie). Exist ns sisteme de operare care permit ca un program s fie divizat n
mai multe task-uri, aceste sisteme de operare numindu-se multithreading.
Dac ne referim la exemplul specific al sistemului de operare Windows, aici dispunem de un
utilitar numit Windows Task Manager cu ajutorul cruia putem vizualiza aplicaiile, procesele i
utilizatorii care sunt activi la un moment dat. n acest caz specific vom vedea c nu vom avea o
coresponden biunivoc ntre aplicaii i procese.
Prin aplicaie se nelege n cazul Windows mulimea de task-uri la care utilizatorul poate
avea acces independent prin pointare cu mouse-ul de pe bara de task-uri.
Prin proces vom nelege mulimea de programe executabile care sunt active la un moment
dat i care sunt gestionate de ctre sistemul de operare. Chiar dac utilizatorul nu lanseaz explicit
n execuie nici o aplicaie vom putea sesiza prezena mai multor procese active care ruleaz n
background, fr a fi sesizate de ctre utilizator, lansate n execuie la ncrcarea sistemului de
operare i rezidente permanent n memorie.
Dac, spre exemplu, se lanseaz n execuie procesorul de text Microsoft Word i se deschid
pentru editare dou documente, atunci fiecare document este considerat o aplicaie iar procesorul de
documente Winword.exe este considerat un proces. n acest caz avem de-aface cu un proces (un
executabil) i dou aplicaii (dou documente de editat).

O aplicaie care aparine unui proces se poate nchide fr a afecta procesul, care rmne n
execuie. Exist ns posibilitatea ca odat cu terminarea unei aplicaii care ine de un anumit proces
s se nchid i procesul aferent. Dac se nchide un proces, se nchid toate aplicaiile care aparin
de proces.

11
Software-ul poate fi mprit n dou clase generale: software de sistem i software de aplicaie.
Software de sistem (system software) care const din totalitatea programelor de nivel sczut care
interacioneaz cu calculatorul la nivel de baz. Aici putem include sistemul de operare,
compilatoare, instrumente de gestionare a fiierelor pe disk (precum My computer, Explore,
Norton Commander) sau utilitare de sistem (multe dintre ele grupate n Control Panel) prin care
se gestioneaz sau configureaz resursele calculatorului.
Software de aplicaie (application software) cuprinde aa-numitele programe pentru utilizatorul
final (end-user application) i include majoritatea aplicaiilor cu care lucreaz n mod curent
utilizatorul unui calculator. Astfel de aplicai pot fi:
- Programe de baze de date precum dBase, FoxPro, VisualFox, Oracle, etc.
- Procesoare de documente precum Microsoft Word, WordPro (mai vechiul AmiPro al firmei
Lotus) sau WordPad inclus n mediul Windows.
- Programe de calcul tabelar precum Microsoft Excel sau Lotus 1-2-3
- Programe de modelare i simulare a sistemelor dinamice, cel mai cunoscut dintre ele fiind
MATLAB/Simulink al firmei MathWorks, SciLab al I.N.R.I.A. Frana sau Matrixx.
- Programe pentru achiziie i prelucrare semnal n timp real precum LabVIEW al firmei
National Instruments.
Aa cum se prezint i n figura de mai sus, software-ul de aplicaie se bazeaz pe software-ul
de sistem deoarece el este incapabil s ruleze fr sistemul de operare sau utilitile de sistem
incluse n software-ul de sistem.
1.3 Realizarea de programe executabile
1.3.1 Ce reprezint un program executabil
Un program este o list organizat de instruciuni care, atunci cnd sunt executate, impun
calculatorului un comportament premeditat i anume cel dorit de programator. Fr programe
calculatoarele sunt inutilizabile.
Un program este ca un recipient care conine o list de ingrediente numite variabile i o list
de directive numite declaraii sau instruciuni care dicteaz calculatorului ce anume s execute cu
variabilele. Variabilele pot reprezenta date numerice, text sau imagini grafice.
Calculatoarele pe care le folosim n mod obinuit, aa numitele PC-uri, sunt bazate n
funcionare pe o unitate integrat logic, aritmetic i de control numit unitate de procesare i
control (CPU-Control Process Unit) sau mai pe scurt microprocesor. Prin proiectare acest
microprocesor, adevrat creier pentru un sistem de calcul, este capabil s execute un numr
predefinit de instruciuni asupra unui anumit set (predefinit) de tipuri de date.

12
Microprocesorul extrage secvenial (pe rnd, una cte una) instruciunile grupate ntr-un
program, numit i program executabil sau executabil. Acest program executabil este conceput de un
programator n funcie de necesitile utilizatorului.
n cele ce urmeaz vom sintetiza procesul de programare a calculatorului, adic vom prezenta
pe scurt care sunt paii pe care i putem face pentru a crea un program executabil.
Orice informaie stocat n memoria intern (RAM sau ROM) a unui calculator sau pe
suporturile de stocare externe (hard sau floppy disk-uri, CD-ROM-uri, etc.) este n format binar,
adic o niruire de bii 0 sau 1.
Instruciunile i datele care compun programele executate de microprocesor sunt n acelai format
binar. Fiecare productor de microprocesoare proiecteaz un anumit set de instruciuni pe care
microprocesorul le poate executa. Aceste instruciuni sunt codificate binar. Spre exemplu, cu 8 bii
se pot codifica 2 8 = 256 instruciuni. La fel se ntmpl i cu datele: ele au un format de reprezentare
binar care la ora actual este standardizat i adoptat de toi productorii de microprocesoare i de
software. Modul de reprezentare al datelor va face obiectul capitolului urmtor.
Un program executabil va fi reprezentat n final de un set de instruciuni i date care sunt
prelucrate de instruciunile respective.
1.3.2 Ce reprezint un limbaj de programare
Problema dificil n programarea unui calculator rezid din faptul c sistemul uman de
reprezentare a informaiilor (imagini vizuale, comenzi verbale sau scrise) este incompatibil cu
sistemul de reprezentare binar intern folosit de microprocesor.
Pentru a realiza o compatibilizare ntre aceste moduri de reprezentare, proiectanii de software
au conceput aa-numitele limbaje de programare. Limabajul de programare este apropiat de
limbajul uman i conine instruciuni cu semnificaii precise, n special n limba englez. De
asemenea, datele ntr-un limbaj de programare sunt reprezentate ntr-un format (numit format
exetern) foarte apropiat sau chiar identic cu formatul de reprezentare a datelor folosit n matematic.
Cu ajutorul unui limbaj de programare programatorul poate implemeta un program surs
folosind comenzi cu o sintax i o semantic apropiat de limbajul uman. Scrierea unui program nu
mai este o problem de limbaj, efortul concentrndu-se asupra implementrii celui mai potrivit
algoritm.
Din puctul de vedere al apropierii de limbajul uman dispunem de limbaje de programare de
nivel nalt (HLPL-high-level programming languages) precum C++, Pascal, BASIC, FORTRAN,
COBOL sau LISP, de limbaje de programare de nivel mediu cum ar fi C sau de limbaje de
programare de nivel sczut numite i limbaje de asamblare care sunt apropiate de limbajul
microprocesorului. De fapt limbajul de asamblare reprezint un set de mnemonice corespunztor
setului de instruciuni al microprocesorului precum i un set de instruciuni mai complexe prin care
se exploateaz optim resursele microprocesorului.
Programarea este cu att mai simpl cu ct limbajul este de nivel mai nalt, dar exist
ntotdeauna un compromis ntre uurina programrii i gestionarea resurselor sistemului de calcul.
Cu alte cuvinte un program scris ntr-un limbaj de nival nalt are dimensiuni mai mari (ocup spaiu
mai mare pe disc sau n memorie) i viteza sa de execuie este mai mic. Resursele calculatorului
sunt cel mai bine gestionate folosind limbajul de asamblare propriu fiecrui microprocesor, dar
efortul de programare este deosebit de intens. Un foarte bun compromis se obine folosindu-ne de
limbajul C, de altfel cel mai rspndit limbaj de programare procedural.
La ora actual viteza de procesare a microprocesoarelor a crescut foarte mult, la fel cu
capacitatea cipurilor de memorie RAM, cu scderea timpului de acces la memorie i cu scderea
preurilor la componentele electronice. Gestionarea resurselor calculatorului nu mai reprezint o
problem foarte stringent, calculatoarele avnd capaciti de memorie i viteze de procesare
deosebit de mari. n acest context au aprut limbaje de programare deosebit de puternice care permit
dezvoltarea de aplicaii i depanarea lor ntr-un timp foarte mic.
Spre exemplu s-au conceput limbaje de programare vizuale, derivate din cele clasice, dar care
sunt prevzute cu faciliti deosebite pentru implementarea intefeelor grafice cu utilizatorul. n

13
mediul de dezvoltare Microsoft Development Kit dispunem de visual-C, visual-Basic i visual-
FoxPro.
C este un limbaj de programare procedural structurat care a fost folosit n primul rnd pentru
dezvoltarea sistemului de operare UNIX (multe dintre versiunile UNIX au fost scrise n C) i apoi
pentru dezvoltarea de aplicaii n mediul academic i industrial. C a fost standardizat ca parte a
Interfeei Sistemului de Operare Portabil POSIX (Portable Operating System Interface).
Odat cu creterea popularitii programrii orientate pe obiect C este nlocuit treptat ca
limbaj de programare de ctre limbajul C++, un superset al limbajului C care folosete un set
complet diferit de concepte de programare.
Java reprezint un limbaj sismilar cu C++ dar mai simplu i a fost proiectat pentru folosirea n
reele distribuite.
Indiferent de ce limbaj de programare folosim, n mediul de programare folosit de
programator pentru dezvoltarea unei aplicaii exist obilgatoriu un editor de texte cu ajutorul cruia
se scriu instruciuni specifice limbajului de programare folosit. La finalul procesului de programare
se obine un fiier text, numit fiier surs care se salveaz pe disc cu un nume ales de programator i
cu o extensie specific limbajului de programare folosit.
1.3.3 Cum se obine un program executabil
Programul surs (source file) conine setul de instruciuni pe care trebuie s le ndeplineasc
microprocesorul. Acest set de instruciuni este scris ntr-un limbaj de programare specific.
Pentru a obine un program executabil, orice program surs trebuie eventual translatat (tradus)
n limbaj cod main sau cod obiect pe care l poate nelege microprocesorul. n urma acestui
proces, alturi de fiierul surs apare i fiierul cod obiect (object file.) Aceast translatare sau
traducere este efectuat de ctre compilatoare, interpretoare sau asambloare.
Compilatorul este folosit pentru transformarea codului surs, adic a programului scris ntr-
un limbaj de programare de nivel nalt, n cod obiect (object code). Acest cod obiect va fi
transformat n faza de editare de legturi n cod main executabil de microprocesorul sistemului de
calcul.
Programatorii scriu programe ntr-o form numit cod surs. Acest cod surs parcurge apoi
civa pai nainte de a deveni program executabil.

Pe scurt, un compilator este un program special care proceseaz instruciuni scrise ntr-un
limbaj de programare particular i le transform n limbaj main sau cod main pe care l poate
executa microprocesorul.
La ora actual un limbaj de programare este inclus ntr-un mediu de programare mai complex
care include un editor de texte pentru introducerea instruciunilor n limbajul de programare de nivel
nalt, un compilator i un editor de legturi folosite pentru translatarea codului surs n cod main.

14
n mod tipic, un programator scrie declaraii ntr-un limbaj precum Pascal, C sau MATLAB
folosind un editor. Se creaz astfel un fiier numit fiier cod surs ce conine o colecie de
instruciuni i declaraii scrise n limbajul respectiv.
Primul pas este prelucrarea codului surs de ctre compilator, care translateaz instruciunile
de nivel nalt ntr-o serie de instruciuni cod obiect. Cnd este lansat n execuie compilatorul
acesta, ntr-o prim etap, lanseaz un analizor sintactic, gramatical, numit parser. Acesta parcurge
i analizeaz sintactic, secvenial, n ordinea n care au fost introduse, toate instruciunile scrise n
limbajul de nivel nalt. O instruciune de nivel nalt se translateaz ntr-una sau mai multe
instruciuni specifice microprocesorului pentru care a fost conceput compilatorul. Aceste
instruciuni ale microprocesorului sunt nlocuite cu codurile lor binare, fiecare instruciune a
microprocesorului fiind codificat de ctre constructor. Codurile binare ale instruciunilor
microprocesorului mpreun cu reprezentrile interne ale datelor manipulate formeaz codul obiect.
Deci n unul sau mai multe faze (parserul este una dintre faze) din codul surs de intrare se
produce un cod de ieire, numit n mod tradiional cod obiect. Este foarte important ca referiri la
alte module de cod s fie corect reprezentate n acest cod obiect.
Pasul final n producerea programului executabil, dup ce compilatorul a produs codul obiect,
este prelucrarea codului obiect de ctre un editor de legturi (link-editor sau linker). Acest linker
combin diferitele module (le leag) i d valori reale, efective, tuturor adreselor simbolice
existente n codul obiect. n urma acestei prelucrri se obine codul main, salvat ntr-un fiier cu
extensia .exe. Acest cod main poate fi executat secvenial, instruciune cu instruciune, de ctre
microprocesor.
Cu alte cuvinte, un program executabil (executable program - aflat pe disc cu extensia .exe)
se obine prin salvarea pe disc a codului main obinut prin prelucrarea succesiv a fiierului cod
surs de ctre compilator (compiler) i apoi de ctre link-editor (linker).
Procesul de obinere a unui executabil este prezentat n figura de mai jos. Blocurile
tridimensionale reprezint entitile principale ale mediului de programare: editorul de texte,
compilatorul (compiler) i editorul de legturi (linker). Blocurile dreptunghiulare reprezint fiierele
rezultate n urma aplicrii celor trei utilitare de sistem:
- n urma utilizrii editorului de texte obinem fiierul text surs cod cu numele generic nume.
Dac folosim limbajul de programare C spre exemplu, se obine fiierul nume.c care se va salva pe
disc.
- n urma lansrii n execuie a compilatorului, acesta preia fiierul surs i l prelucreaz
corespunztor, semnalizndu-se toate erorile fatale pentru program sau avertismente utile
programatorului n procesul de depanare. n cazul n care compilarea se efectueaz cu succes, se
obine un fiier cod obiect, salvat pe disc sub numele nume.obj
- n urma lansrii n execuie a editorului de legturi, se preia fiierul cod obiect nume.obj i se
leag cu toate modulele necesare (inclusiv funcii de bibliotec sau alte module externe), obinndu-
se un program executabil (cod main) cu numele nume.exe la care adresele nu mai sunt simbolice
ci absolute relativ la adresa de nceput a programului. La lansarea n execuie a programului fluxul
de informaie este complet controlat de ctre microprocesor, toate salturile de adres fiind fcute
corespunztor.

15
Ins truc iunile n lim b a jul
d e nive l na lt s e intro d uc
d e la ta s ta tur .

T o t c e s e intro d uc e d e la
ta s ta tur e s te vizib il p e m o nito r

E d ito r d e te x te
(e ve ntua l inc o rp o ra t n m e d iu)

F i ie r te xt (fi ie r s u rs )
c u e xte ns ia a d e c va t :
n u m e .p a s (lim b a j P a s c a l)
n u m e .c (lim b a j C )
n u m e .c p p (lim b a j C + + )
n u m e .b a s (lim b a j B A S IC ), e t c . F i ie rul s urs c u num e le
num e i e xte ns ia
c o re s p unz to a re s e s a lve a z
d in m e m o ria R A M p e ha rd d is k
C o m p ila to r
S e c o m p ile a z fi ie rul s urs

S e o b ine fi ie rul c o d o b ie c t:
n u m e .o b j
S e s a lve a z p e ha rd d is k fi ie rul
n u m e .o b j

L in k -e d ita re
(le ga re a tuturo r m o d ule lo r ne c e s a re )

S e o b ine fi ie rul c o d m a in
(e x e c u ta b il):
n u m e .e x e S e s a lve a z p e ha rd d is k fi ie rul
n u m e .e x e

L a ns a re a n e xe c uie d e c tre
s is te m ul d e o p e ra re
a e xe c uta b ilului n u m e .e x e

Interpretorul (interpreter) este un program care execut instruciuni scrise ntr-un limbaj de
nivel nalt. Numai anumite limbaje de nivel nalt, spre exemplu BASIC, LISP sau MATLAB, sunt
prevzute cu un interpretor.
Exist dou modaliti de a executa un program scris n limbaj de nivel nalt. Cel mai comun
mod este acela de a compila programul. Cealalt modalitate este pasarea programului unui
interpretor.
Un interpretor translateaz instruciunile de nivel nalt ntr-o form intermediar care este apoi
executat. Prin contrast, un compilator translateaz instruciunile de nivel nalt direct n limbaj
main (cod main). Programele compilate ruleaz n general mai rapid dect cele interpretate. Un
alt avantaj al programelor compilate este acela al desprinderii din context n sensul c programele
executabile generate n urma procesului de compilare pot fi executate direct sub sistemul de operare
al calculatorului. Un program interpretat se execut sub mediul n care a fost creat.
Spre exemplu, pentru a rula un program scris n limbajul BASIC se lanseaz n execuie
mediul BASIC, apoi se deschide fiierul surs-BASIC corespunztor i se lanseaz interpretorul de
BASIC pentru execuia sa.

16
Avantajul unui interpretor este acela al evitrii procesului de compilare consumator de timp n
cazul n care avem programe de mari dimensiuni. Interpretorul poate executa imediat programele
surs. Pentru acest motiv interpretoarele se folosesc mai ales n procesul de dezvoltare al
programelor, cnd programatorul dorete adugarea unor mici poriuni de program pe care s le
testeze rapid. De asemenea, interpretoarele permit o programare interactiv fiind des folosite n
procesul de instrucie.
n mediul de programare MATLAB, mediu interpretor, orice comand utilizator se execut
imediat. Se pot edita i fiiere script, care conin secvene de comenzi care se execut secvenial.
Programele de descriere a paginii (Page description Languages) ca PostScript spre exemplu
folosesc un interpretor. Fiecare imprimant PostScript are incorporat un interpretor care execut
instruciuni PostScript.
Asamblorul (assembler) este un program care face translaia unui program scris n limbaj de
asamblare (limbaj de nivel sczut, corespunztor microprocesorului sistemului de calcul) n limbaj
cod main. Putem spune c asamblorul reprezint pentru limbajul de asamblare ceea ce reprezint
compilatorul pentru limbajele de nivel nalt. Cum limbajul de asamblare conine instruciuni mai
puin complexe dect cele de nivel nalt, asamblorul face practic o convertire biunivoc ntre
mnemonicele limbajului de asamblare i codurile binare corespunztoare acestor mnemonice
(instruciuni).
1.4 Biblioteci
O bibliotec este o colecie de fiiere.
Un fiier este o colecie de date sau de informaii care au un nume (filename). Aproape toate
informaiile stocate pe suporturi externe (dischete, harddisk-uri, CD-ROM-uri, etc.) sunt sub form
de fiiere. Exist diferite tipuri de fiiere: fiiere de date (data files), fiiere text (text files), fiiere
executabile (programe, program files), fiiere directoare (directory files), etc.
Diferitele tipuri de fiiere stocheaz diferite tipuri de informaii. Spre exemplu, fiierele
program cu extensia ,exe stocheaz date n format cod main executabil de ctre microprocesor iar
fiierele text stocheaz text, adic o niruire de coduri ASCII corespunztoare caracterelor ce
compun cuvintele, semnelor de punctuaie, etc.
Din acest punct de vedere, n tehnica programrii, prin bibliotec se nelege o colecie de
rutine precompilate (fiiere cod obiect, cu extensia .obj) pe care le poate utiliza un program.
n software, un modul este o parte a unui program. Programele pot fi compuse din unul sau
mai multe module dezvoltate independent care se pot combina pentru a forma un program mai
complex n faza de editare de legturi. Un singur modul poate conine unul sau mai multe rutine.
O rutin (routine) este o seciune a unui modul de program care realizeaz o anumit sarcin.
Deci programele constau din module, fiecare modul coninnd unul sau mai multe rutine. n general
termenul de rutin este sinonim cu procedur, funcie sau subrutin.
Concluzionm c o bibliotec este o colecie de funcii precompilate, stocate n format .obj,
care pot fi folosite de orice modul de program care apeleaz aceste funcii i care se leag, n faza
de editare de legturi, cu biblioteca respectiv.
Bibliotecile sunt foarte utile pentru stocarea funciilor folosite frecvent deoarece nu este
nevoie s le legm explicit la orice program care le folosete. Linker-ul caut automat n anumite
biblioteci pentru funciile pe care nu le gsete n alt parte.
1.4.1 Biblioteci cu legare static
Orice modul de program care apeleaz funcii are dou componente:
- partea din modul care apeleaz funcia, numit modul apelant
- funcia apelat propriu-zis
n faza de compilare, orice funcie apelat este tratat din punct de vedere sintactic i din
punctul de vedere al modului de apelare. Compilatorul este interesat de compatibilitatea ntre tipul
parametrilor actuali de apelare i tipul parametrilor formali de intrare i de ieire cu ajutorul crora
au fost definite funciile apelate.

17
Bibliotecile cu legare static sunt de fapt o colecie de funcii precompilate. n faza de editare
de legturi, link-editorul extrage o copie a fiecrei funcii precompilate apelate i o nregistreaz n
programul executabil final la o anumit adres alocat precis de ctre el.
Astfel, n programul executabil obinut n final se regsete o copie a codului obiect al fiecrei
funcii apelate de ctre modulele care compun programul. Dup faza de compilare i editare de
legturi, pri din bibliotecile cu care s-a fcut legarea se regsesc n codul main rezultat. Aceste
pri reprezint codurile obiect ale funciilor apelate de ctre toate modulele componente ale
programului surs.
M o d ul 1 M o d ul 2 M o d ul n

C o mpila to r

F iier F iier F iie r


o b iec t 1 o b iec t 2 o b ie ct n

E dito r de
B iblio te ca 1 le g turi

B iblio te ca 2

B iblio te c a m
Pro g ra m
e x e c uta bil

Salvat pe disc, programul executabil va conine incluse codurile obiect ale tuturor funciilor la
care face apel, cu adresele la care se vor dispune n memoria RAM cnd se vor lansa n execuie.
Aceste adrese constituie un deplasament relativ la adresa de baz a segmentului de memorie n care
se ncarc programul executabil de ctre sistemul de operare.
Dac mai multe programe fac apel la aceleai funcii, imaginile cod obiect ale acestor funcii
se vor gsi n fiecare cod program.
Sistemele de operare moderne sunt nevoite s optimizeze resursele calculatorului. Dac se
lanseaz n execuie mai multe programe executabile n cadrul unui sistem de operare multitasking
cum este Windows, atunci este posibil ca anumite funcii s fie ncarcate repetitiv n memorie de
ctre fiecare program executabil n parte. Resursele de memorie nu mai sunt folosite judicios.

18
Modul program 1 (cod obiect) Program executabil
Biblioteca
(modul unic)
(cod main, .exe)
funcia_1( )

funcia_2( )

apel
funcia_2( ) apel
funcia_2( )

funcia_n( )

apel
funcia_1( ) apel
funcia_1( )
Link-editor

funcia_2( )

funcia_1( )

1.4.2 Biblioteci cu legare dinamic


DLL (Dynamic Link Library) este o bibliotec de funcii executabile care pot fi folosite de
aplicaiile Windows. In mod normal, o DLL furnizeaz una sau mai multe funcii particulare i un
program acceseaz aceste funcii prin crearea unor legturi fie statice, fie dinamice.
O legtur static rmne constant n timpul execuiei programului n timp ce o legtur
dinamic este creat de program n timpul execuiei numai atunci atunci cnd este necesar.
Mai mult, o bibliotec cu legare dinamic (DLL) poate fi folosit n comun de mai multe
aplicaii care se execut simultan. DLL-urile pot conine uneori numai date, nu i cod main.
Anumite DLL-uri sunt furnizate mpreun cu sistemul de operare Windows i sunt disponibile
pentru orice aplicaie Windows. Alte DLL-uri sunt scrise pentru o aplicaie particular i sunt
ncrcate numai cu aplicaia respectiv.
Fiierele DLL se termin n mod uzual cu extensiile .dll (mai ales pentru biblioteci),.exe.
(pentru executabile), drv (pentru driverele diferitelor dispozitive), sau .fon (pentru gestionarea
diferitelor fonturi).
Sub sistemele de operare Windows, o bibliotec cu legare dinamic (DLL, Dynamic Link
Library) reprezint o colecie de programe de mici dimensiuni, fiecare program putnd fi apelat de
un program mai mare care ruleaz pe acel sistem de calcul la un moment dat. Aceste programe de
dimensiuni mai mici care permit programelor mai mari comunicaia cu diferite dispozitive de
intrare/ieire precum imprimanta sau scanner-ul sunt adesea mpachetate n fiiere cu extensia
.DLL, numite i programe DLL.
Avantajul folosirii unui fiier DLL este acela c el nu trebuie ncrcat n memoria RAM odat
cu programul executabil care l apeleaz, salvndu-se astfel spaiu de memorie preios. Cnd este
nevoie de un fiier DLL, el se ncarc n memorie ntr-o zon liber i se lanseaz n execuie.
Legtura cu fiierul DLL se numete dinamic deoarece, spre deosebire de biblioteca static, adresa
de ncrcare a fiierului DLL n memorie nu este fix, ci variabil, n funcie de adresa primului
segment de memorie RAM liber.
Spre exemplu, dac editm un document folosind Microsoft Word, fiierul DLL asociat
imprimantei nu este ncrcat n memoria RAM. Dac utilizatorul decide s tipreasc documentul,
atunci fiierul DLL al imprimantei se ncarc n memorie i se execut.

19
Un fiier DLL sau o bibliotec cu legare dinamic este recunoscut dup extensia .dll ataat
numelui fiierului. Fiierele DLL se leag dinamic cu programul care le folosete n faza de
execuie a programelor, nu n faza de compilare i link-editare ca n cazul bibliotecilor cu legare
static.
Ca i un program executabil de sine-stttor, o bibliotec cu legare dinamic este compus
dintr-o serie de module de cod main ce reprezint funciile din bibliotec apelabile dintr-un
program executabil lansat n execuie sau dintr-un alt DLL.
Spre deosebire de fiierele program executabile (cu extensia .exe), fiierele DLL nu conin
codul necesar pentru a se executa (funciona, rula) de sine-stttor. Ele trebuie apelate pentru
execuie fie dintr-un cod executabil fie accesate dintr-un alt DLL care este executat.
Fiierele DLL care asigur operaii cu dispozitive specifice sunt cunoscute sub numele de
drivere de dispozitiv (device driver sau mai simplu drivere).
n contextul tehnologic al calculatoarelor, un dispozitiv (device) este o unitate de hardware,
situat n afara sau n interiorul carcasei calculatorului, care este capabil de suport pentru intrri,
ieiri (sau ambele) de la unitatea central a sistemului de calcul. Cnd se folosete termenul de
computer device atunci noiunea include tastaturi, mouse-uri, monitoare pentru afiare, drivere de
hard disk, cititoare de CD-ROM, imprimante, difuzoare audio sau microfoane sau orice alt
dispozitiv hardware. Anumite dispozitive precum driverul de hard disk sau cel de CD-ROM, care
sunt situate n interiorul carcasei calculatorului, sunt considerate dispozitive separate deoarece se
pot instala sau nlocui separat.
Prile componente ale unui sistem de calcul care nu se consider dispozitive sunt placa de
baz (motherboard), procesorul sau coprocesorul, precum i memoria cu acces aleator RAM.
Termenul de periferic se refer la dispozitivele de intrare/ieire.
Un device driver este un program care controleaz un tip particular de dispozitiv ataat sau
inclus la sistemul de calcul. Exist device drivere pentru imprimante, monitoare, cititoare de CD,
dischete, etc. Atunci cnd se achiziioneaz un sistem de operare, acesta include o serie de drivere
pentru diversele dispozitive posibil de ataat la acest sistem. Dac se achiziioneaz un dispozitiv
mai recent dect sistemul de operare, atunci este necesar ca acesta s fie nsoit de un device driver
care s fie instalat dup montarea fizic a dispozitivului. Instalarea acestui driver informeaz
sistemul de operare ce fiiere DLL se utilizeaz n lucrul cu dispozitivul corespunztor.
Un device driver convertete, n principal, instruciunile generale de intrare/ieire ale
sistemului de opeare n mesaje specifice dispozitivului fizic adresat. Cu alte cuvinte, sistemul de
operare folosete, spre exemplu, instruciuni de tiprire de tip general, care nu sunt specifice numai
unei anumite imprimante. Este sarcina printer driverului s converteasc aceste instruciuni
generale ale sistemului de operare n instruciuni specifice imprimantei folosite. Aceasta crete
flexibilitatea unui sistem de operare, care este astfel adaptabil la o gam mai larg de dispozitive
produse de diveri productori. Ceea ce se schimb la nlocuirea unei imprimante cu una de alt tip
este numai driverul de imprimant.
Anumite programe Windows sunt considerate drivere virtuale de dispozitiv (virtual device
drivers). Aceste programe interfaeaz sistemul de calcul cu Windows Virtual Machine Manager.
Exist un astfel de driver virtual pentru orice dispozitiv principal din componena sistemului de
calcul, inclusiv pentru tastatur, hard disk sau porturile seriale sau paralele. Acestea sunt folosite
pentru a menine nregistrri cu starea (status) tuturor dispozitivelor hardware. Starea unui
dispozitiv se refer la setrile curente ale parametrilor dispozitivelor (cu alte cuvinte setrile curente
ale imprimantei, ale monitorului (numr de culori i rezoluie), ale interfeei seriale (rata de
transmisie), etc.).
Driverele de dispozitiv virtuale manevreaz n special ntreruperi software provenite din
sistem, nu ntreruperi hardware.
n sistemul de operare Windows, un driver de dispozitiv este reprezentat de un fiier cu
extensiile .exe, .drv sau .dll. Un driver virtual de dispozitiv are extensia .vxd.

20
Capitolul 2
REPREZENTAREA DATELOR N CALCULATOR
Se tie c un calculator numeric prelucreaz numere binare. Acest lucru ine de suportul fizic
de manipulare, transport i stocare a datelor interne, mai bine zis este legat de faptul c semnalul
fizic purttor de informaie este o tensiune continu cu dou valori: una nalt (High) i una joas
(Low). Acestor dou valori li se asociaz natural dou valori logice: T (true, adevrat) i F (false,
fals) sau cele dou cifre binare1 i 0.
T e nsiune

H igh= 1

L o w = 0

timp
Ca urmare a acestei asocieri spunem, prin abuz de limbaj, c un calculator numeric
prelucreaz numere binare. Ca i un numr zecimal, un numr binar are mai multe cifre binare.
Sistemul de numeraie binar folosit pentru reprezentarea informaiei n calculatoare este un sistem
de numeraie ponderal, ntocmai ca sistemul de numeraie zecimal.
Reprezentarea natural a numerelor la nivelul percepiei umane este cea zecimal, pe cnd
reprezentarea proprie mainilor de calcul este cea binar. De aici rezult necesitatea compatibilizrii
sau interfarii ntre aceste dou moduri de reprezentare a numerelor. Cum cele dou sisteme de
numeraie sunt ponderale, o prim diferen este aceea c sistemul zecimal folosete ca ponderi
puterile ntregi (pozitive sau negative) ale lui 10 (zece) iar sistemul binar va folosi puterile ntregi
(pozitive sau negative) ale lui 2.
n alt ordine de idei, dac pentru reprezentarea extern sunt semnificative simbolurile de
reprezentare (cifre, semnele + sau -, punct zecimal sau binar, mantis sau exponent), pentru
reprezentarea intern sunt necesare convenii de reprezentare: indiferent de tipul datelor, acestea vor
fi colecii sau iruri de cifre binare crora, prin convenie, li se atribuie semnificaii.
ntr-o prim instan, este foarte important s facem o distincie ntre tipurile de date
recunoscute de un calculator (sau mai bine zis de microprocesorul cu care este dotat calculatorul
personal) i formatele de reprezentare ale acestor date ce reprezint convenii pentru reprezentarea
tipurilor de date, att la nivel intern (n memoria calculatorului) ct i la nivel extern, al percepiei
umane.
Din punctul de vedere al tipurilor de date care sunt implementate n limbajul C putem spune
c distingem dou mari categorii, date de tip ntreg (integer) i date de tip real (float). Formatele de
reprezentare intern/extern vor fi prezentate n cele ce urmeaz. Cel mai simplu de reprezentat sunt
numerele naturale. Se face apoi trecerea la numerele ntregi negative i apoi la numerele reale care
au o parte ntreag i una fracionar.
2.1. Reprezentarea intern/extern a numerelor
Reprezentarea intern a numerelor se refer la modul n care se stocheaz datele n memoria
RAM a calculatorului sau n regitrii microprocesorului. n acest format se prelucreaz numerele

21
I will am 12 years old.
We were going to the shop.
She thinks her pet is ugly.
Someone is knocking at the door. Ill open.
I am going to the market.

pentru impleme ntarea diverselor operaii aritmetice. La


nivelul calculatorului informaia nu poate fi dect binar. n aceast reprezentare putem scrie
numere ntregi pozitive sau negative sau numere reale.
Exist un standard IEEE care reglementeaz modul de reprezentare intern a datelor.
Reprezentarea extern este reprezentarea numerelor la nivelul utilizatorului uman, deci n
principiu se poate folosi orice baz de numeraie pentru reprezentarea numerelor. La nivel de
reprezentare extern se folosete semnul - n faa unui numr n cazul n care acesta este negativ
sau punctul care separ partea ntreag de cea fracionar. De asemenea, numerele ntregi
interpretate fr semn se pot afia i n format binar, octal sau hexazecimal, deci n bazele 2, 8 sau
16.
n cele ce urmeaz ne vom pune urmtoarele probleme:
- cum se reprezint extern un numr natural
- cum se reprezint intern un numr natural
- cum se reprezint extern un numr ntreg negativ
- cum se reprezint intern un numr ntreg negativ
- cum se face conversia de la reprezentarea extern la cea intern
- cum se face conversia de la reprezentarea intern la cea extern
2.2. Reprezentarea extern a numerelor
n ceea ce privete reprezentarea extern, nu sunt nici un fel de dificulti deoarece fiecare
este familiarizat cu reprezentarea zecimal a numerelor naturale sau reale. Trebuie menionat de la
nceput c orice tip de reprezentare pe care o vom folosi este ponderal n sensul c poziia cifrelor
n numr nu este ntmpltoare ci conform cu o pondere corespunztoare unei puteri a bazei de
numeraie.
O caracteristic a reprezentrilor externe este folosirea unor convenii de format unanim
acceptate i de altfel foarte naturale pentru un utilizator uman. Spre exemplu, pentru a exprima
numere negative se folosete semnul - iar pentru reprezentarea numerelor reale se folosete
punctul . pentru delimitarea prii ntregi de cea fracionar. De asemenea, suntem familiarizai i
cu notaia tiinific n care intervine mantisa i exponentul (n virgul mobil).
Reprezentarea zecimal este cea mai natural pentru utilizatorul uman. Vom oferi n
continuare cteva exemple de reprezentri zecimale externe:
Numr Reprezentare Reprezentare
normal tiinific
37 37 0.37x102
-37 -37 -0.37x102
0.375 0.375 0.375x100
-0.375 -0.375 -0.375x100
0.00375 0.00375 0.375x10-2
- -0.00375 -0.375x10-2
0.00375
12.375 12.375 0.12375x102
-12.375 -12.375 -0.12375x102

22
n general dorim s obinem rezultatele numerice ale programelor pe care le concepem ntr-o
form de reprezentare accesibil. Totui, calculatorul trebuie informat asupra formatului de
reprezentare n care dorim s se afieze datele necesare. Aceasta nseamn c va trebui s
specificm cte cifre se vor folosi la partea ntreag i cte la partea fracionar sau dac dorim
reprezentare tiinific sau nu. De altfel i operatorul uman face aceleai convenii de reprezentare.
1
Spre exemplu tim c numrul nu poate fi exact reprezentat ca un numr zecimal, deci fixm un
3
format de reprezentare. Dac formatul ale se limiteaz la 4 cifre zecimale, atunci vom scrie
1
0.3333
3
Limbajul C are o serie de funcii de reprezentare cu format a datelor numerice sau
alfanumerice prin care programatorul poate impune un format extern cu care se manipuleaz datele.
1.2.1 Reprezentarea extern a numerelor ntregi
Numerele naturale se pot reprezenta fie n baza de numeraie 10, fie n orice alt baz.
n general, un numr ntreg n baza b se poate reprezenta cu un numr predeterminat de cifre
ci B = {0,1,2,....., b 2, b 1} . Mulimea B reprezint mulimea cifrelor sau simbolurilor de
reprezentare. Spre exemplu:
b = 2 B = {0,1}
b = 7 B = {0,1,2,3,4,5,6}
b = 10 B = {0,1,2,3,4,5,6,7,8,9}
Noi suntem obinuii s folosim mulimea cifrelor zecimale. Dac totui se folosete o baz de
reprezentare mai mare dect 10, atunci mulimea cifrelor zecimale nu mai este suficient pentru
reprezentarea numerelor n acea baz. Spre exemplu s considerm baza b = 16 care va folosi 16
cifre hexazecimale (sau mai simplu hexa). Prin convenie, cele 16 cifre hexazecimale vor fi:
Cifra Simbol Cifra Simbol
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F
Forma general de reprezentare extern a numerelor ntregi este de forma:
N b = c n 1c n 2 ......c 2 c1c 0

c k B = {0,1,2,....., b 2, b 1}
Valoarea numeric zecimal a numrului N b va fi:

( ) ck b k
n 1
N b = c n 1 b n 1 + c n 2 b n 2 + ... + c1 b1 + c 0 b 0 =
k =0
n continuare vom studia urmtoarele probleme:
- cum se face conversia unui numr din baza b = 10 n baza b = 2
- cum se face conversia invers, din baza b = 2 n baza b = 10
- cum se face conversia dintr-o baz oarecare b1 n alt baz b2
Pentru a reprezenta un numr natural din baza 10 n baza 2, se mparte succesiv numrul la 2
i se utilizeaz resturile la aceste mpriri n ordinea invers de cum au fost obinute.
a) Conversia din baza 10 n baza 2 i invers
Fie de exemplu numrul zecimal 37. Reprezentarea sa binar va fi obinut astfel:
3710 = 1001012

23
37 2
36 18 2
1 18 9 2
0 8 4 2
1 4 2 2
0 2 1
0

Conversia invers, din baza 2 n baza 10 este simpl i utilizeaz ponderea 2:

25 24 23 22 21 20
100101 2 = 1 0 0 1 0 1 = 1x2 5 + 1x2 2 + 1x2 0 =37
Cu aceste numere naturale putem face o serie de operaii aritmetice. Adunarea numerelor naturale
binare se face ntocmai ca la cele n reprezentare n baza 10, dup regula:
0+0=0
0+1=1
1+0=1
1+1=0, transport 1 spre rangul urmtor
Astfel, s facem adunarea 37+25 n binar:
37 1 0 0 1 0 1+
25 1 1 0 0 1
62 1 1 1 1 1 0
Se observ cum se obine rezultatul corect.
nmulirea se face n mod asemntor, ca o adunare repetat. Spre exemplu, s calculm
37x25
37 1 0 0 1 0 1x
25 11001
100101
100101
100101
925 1110 011101
11100111012 = 1x2 + 1x2 + 1x2 +1x24 +1x27 +1x28+1x29 = 1+4+8+16+128+256+512 = 92510
0 2 3

b) Conversia dintr-o baz oarecare b1 ntr-o alt baz b2 .


Fie spre exemplu numrul 4911 care se dorete scris n baza 13.
Pentru a realiza aceast conversie, vom folosi baza intermediar 10. Vom converti mai nti 4 A11 n
baza 10 i apoi numrul zecimal obinut l vom trece n baza 13. Se observ cum un numr n baza
11 poate conine i cifra A=10 iar un numr n baza 13 poate conine cifrele A=10, B=11, C=12.
4 A11 = 10 110 + 4 111 = 44 + 10 = 5410
54 13
52 4 13
2 0 0
4

5310 = 4213
4 A11 = 4213
1.2.2 Reprezentarea extern a numerelor reale
Semnificativ pentru utilizatorul uman este reprezentarea zecimal (n baza b=10) a
numerelor reale, cu care suntem obinuii. Fa de reprezentarea numerelor ntregi, la numerele
reale intervine simbolul punct . care delimiteaz partea ntreag de partea fracionar. Cu alte
cuvinte, cu ajutorul numerelor reale putem reprezenta i numere care nu sunt ntregi. Forma
general a unui numr real reprezentat ntr-o baz oarecare b este:

24
N b = c n 1c n 2 ...c1c 0 c 1c 2 ...c m +1c m

c k B = {0,1,2,..., b 2, b 1}
Valoarea zecimal a numrului de mai sus va fi:

( ) ck b k
n 1
N10 = cn 1b n 1 + cn 2b n 2 + c1b1 + c0b 0 + c1b 1 + c 2 b 2 + c m +1b m +1 + c m b m =
k = m

Se observ cum punctul delimiteaz partea ntreag (exprimat printr-o combinaie de puteri
pozitive ale bazei b) i partea fracionar (exprimat printr-o combinaie de puteri negative ale bazei
b).
Semnificaie pentru programator i pentru productorii de software sau microprocesoare au
bazele de reprezentare b = 10 i b = 2 , deoarece baza 10 este natural pentru reprezentarea extern a
numerelor iar baza 2 este natural pentru reprezentarea binar, intern, a numerelor.
n formulele de mai sus avem o reprezentare a unui numr real cu n cifre pentru partea
ntreag i m cifre pentru partea fracionar.
Aa cum n sistemul zecimal reprezentm cu un numr finit de cifre zecimale numerele reale,
acelai lucru se va ntmpla i n sistemul binar. Punctul binar va avea o semnificaie asemntoare
cu punctul zecimal, care face separarea ntre partea ntreag i cea fracionar. Cifrele binare situate
dup punctul binar vor corespunde puterilor negative ale lui 2.
Astfel, n general, un numr real va avea reprezentarea binar:
(
N 2 = bm bm1...b1b0 .b1b2 ...bn = bm 2 m + bm1 2 m1 +b1 21 + b0 2 0 + b1 2 1 + b2 2 2 + ... + bn 2 n )
Spre exemplu, numrul 12.25 va avea reprezentarea binar:
12.2510 = 1100.01 = 2 3 + 2 2 + 2 2
Partea ntreag a unui numr real se reprezint binar precum numerele ntregi (cu sau fr
semn). Pentru a determina partea fracionar, se procedeaz n mod invers ca la partea ntreag.
Astfel, dac partea fracionar zecimal se reprezint binar, atunci aceasta se nmulete
succesiv cu 2. Dac rezultatul depete valoarea 1, atunci se nscrie un bit 1. Se continu mai
departe cu dublarea valorii care depete 1. Dac rezultatul nu depete valoarea 1, atunci se
nscrie un bit 0 i se continu multiplicarea cu 2. Spre exemplificare, vom vedeaa cum se obine
reprezentarea binar a lui 12.25. Partea ntreag este 12. Ea se reprezint binar prin mpriri
succesive la 2 i considerarea resturilor. Partea fracionar este 0.25
Partea P.F. x 2 Noua Bitul
fracionar P.F. P.F. nscris
0.25 0.5 0
0.5 1 0 1
0
Obinem exact rezultatul cutat: 12.25 = 1100.01
S mai considerm un alt exemplu. S reprezentm numrul 5.37
Partea ntreag are reprezentarea 510 =1012
Partea P.F. x 2 Noua Bitul
fracionar P.F. P.F. nscris
0.37 0.74 0.74 0
0.74 1.48 0.48 1
0.48 0.96 0.96 0
0.96 1.92 0.92 1
0.92 1.84 0.84 1
0.84 1.68 0.68 1
0.68 1.36 0.36 1
0.36 0.72 0.72 0
25
0.72 1.44 0.44 1
Etc.. Etc..
Obinem: 5.3710 = 101.010111101...2
Cu ct mai multe cifre binare vom reine dup punctul binar, cu att vom fi mai aproape de valoarea
exact 5.37.
Obinem un rezultat foarte important: Dei un numr zecimal poate avea un numr finit de
cifre zecimale dup punctul zecimal, reprezentarea sa binar intern poate avea un numr infinit
de cifre binare. Este valabil i reciproca: un numr real zecimal cu un numr infinit de cifre se
1
poate reprezenta ntr-o alt baz pe un numr finit de cifre ( ex: = 0.3333...3...10 = 0.13 ). Cum
3
orice reprezentare binar intern este pe un numr finit de bii, numrul poate s nu fie reprezentat
exact n calculator, ci cu o anumit aproximaie. Acest lucru este decisiv pentru a nelege
importana lungimii reprezentrii numerelor n calculator. Cu ct un numr binar se reprezint pe
un numr mai mare de bii, cu att precizia de reprezentare crete.
2.3 Reprezentarea intern a numerelor
Deoarece semnalul intern purttor de informaie ntr-un calculator este de tip binar, un numr
zecimal (ntreg sau real) se va reprezenta intern n baza 2 cu ajutorul unui numr binar. O cifr
binar se numete bit (Binary Digit) i poate fi fie 0 fie 1.
n reprezentarea extern a numerelor am vzut c se poate folosi orice baz de numeraie (cu
cifrele corespunztoare). De asemenea, numerele pot fi prefixate cu un simbol de semn i pot
include n reprezentare i punctul de saparaie ntre partea ntreag i cea fracionar.
n reprezentarea intern acest lucru nu mai este posibil deoarece semnele plus (+), minus (-)
sau punct (.) nu au nici o semnificaie pentru calculator. Orice numr (orice tip de dat) este
reprezentat la nivel intern de un numr prestabilit de bii. Specialitii din industria software au ajuns
la un consens de reprezentare concretizat prin standardul IEEE 754 de reprezentare a intern a
numerelor reale n computere.
Reprezentarea intern a numerelor a impus n limbajul C definirea aa-numitelor tipuri de
date.
Tipul unei date reprezint modul n care microprocesorul stocheaz n memorie i prelucreaz
cu ajutorul regitrilor interni o dat. Tipul unei date se refer la lungimea sa de reprezentare (pe ci
bii se reprezint data) precum i ce semnificaie au anumite cmpuri de bii din cadrul reprezentrii.
2.3.1 Reprezentarea intern a numerelor ntregi
Un numr binar este o colecie de cifre binare ponderate fiecare cu o putere a lui 2. Bitul
corespunztor ponderii celei mai mari, situat cel mai n stnga, se numete MSB (Most Significand
Bit) iar cel corespunztor ponderii celei mai mici, situat cel mai n dreapta, se numete LSB (Less
Significand Bit). n cazul reprezentrii binare a numerelor naturale, reprezentarea extern (cea
perceput de operatorul uman) i cea intern (cea prelucrat de procesorul calculatorului) sunt
asemntoare. Cum pentru operatorul uman operatorii + sau - semnific faptul c un numr este
pozitiv sau negativ, este necesar o convenie pentru reprezentarea intern a numerelor ntregi
negative.
Aceast convenie prevede folosirea MSB pentru reprezentarea semnului numerelor ntregi.
Dac numrul este pozitiv, se adaug n poziia MSB bitul de semn 0, iar dac numrul este
negativ se utilizeaz n poziia MSB bitul de semn 1. Mai mult, numerele negative se reprezint n
aa numitul complement fa de 2.
Reprezentarea numerelor ntregi negative n complement fa de 2
Aceast form de reprezentare a numerelor negative necesit parcurgerea urmtorilor pai:
pas1. Se reprezint modulul numrului negativ, folosind bit de semn (egal cu 0, evident)
pas2. Se complementeaz toi biii numrului astfel obinut. Complementarea nseamn
transformarea bitului 0 n bitul 1 i a bitului 1 n bitul 0.
pas3. Numrul astfel obinut se adun cu 1.
De exemplu, s reprezentm numrul -37.

26
pas 1. |-37| = 37 3710 = 1001012 = [0] 100101
bit
semn
pas2. 0100101---->1011010
pas3. 1011010 + 1 = 1011011 => -3710 = 10110112
Evident, MSB este bitul de semn i este egal cu 1.
La o prim vedere, este posibil s credem c prin utilizarea complementului fa de 2 putem
pierde semnificaia numrului negativ. Pentru a vedea ce numr negativ este reprezentat, putem
repeta procedeul de mai sus i obinem reprezentarea numrului pozitiv dat de modulul su.
O modalitate mai simpl este alocarea ponderii corespunztoare bitului de semn dar pe care o
considerm c reprezint un numr negativ. Astfel:
10110112 = -1x26 + 1x24 + 1x23 + 1x21 + 1x20 = -64 + 27 = -37
2.3.2 Adunarea, scderea i nmulirea numerelor ntregi
Aceste operaii se execut folosind reprezentarea n complement fa de 2 a numerelor ntregi,
sau, mai bine zis, se execut folosind n algoritmi bitul de semn ca pe un bit obinuit.
De exemplu, dorim s calculm:
37-25
25-37
(-25)x37
(-25)x(-37)
Pentru efectuarea acestor calcule, vom scrie reprezentrile cu bit de semn ale numerelor implicate:
2510 = 110012 = 011001
25 = 100111
10 2

37
10 = 1001012 = 0100101
3710 = 1011011
Se observ c 25 i (-25) se reprezint pe 6 bii iar 37 i (-37) pe 7 bii.
Deoarece am observat c biii unui ntreg cu semn nu au toi aceeai semnificaie, este nevoie
s reprezentm numerele cu care lucrm pe un acelai numr de bii. La adunri sau scderi, biii de
semn se vor afla n aceeai poziie (vor avea aceeai pondere) i vom obine astfel rezultate corecte.
Pentru a avea o scriere pe un acelai numr de bii, se adaug (completeaz) la stnga bitul de semn
de un numr corespunztor de ori. Astfel:
37 25 = 37 + ( 25) = 0100101 + 1100111
0100101 +
2510 = 1001112 = 1100111
1100111
25 = 0110012 = 0011001

0001100 = 1210

25 37 = 25 + (37) = 0011001 + 1011011


0011001 +
37 = 1011011
1011011
25 = 0110012 = 0011001

1110100 = 64 + 52 = 12
n continuare vom pune n eviden importana gamei de reprezentare, adic a domeniului de
valori ale datelor. S considerm, spre exemplu, adunarea a dou numere cu semn reprezentate pe
un octet (8 bii). Aceste numere sunt cuprinse n gama
[ 2 , 2 1] = [ 128, 127].
7 7

Dac vom dori s adunm dou numere din acest domeniu i s reprezentm rezultatul tot pe
un octet, putem avea surprize. De exemplu, s considerm operaiile (117-12) i (117+12). Se

27
observ c operanzii sunt n gama de reprezentare a numerelor cu semn pe 8 bii. Prin prima
scdere, ne ateptm s obinem un rezultat, 105, n aceeai gam de reprezentare.
117-12=117+(-12) = 01110101+11110100 = 01101001 = 10510, rezultat corect.
117+12 = 01110101+00001100 = 10000001 = -12710,
rezultat evident incorect.
Incorectitudinea provine de la faptul c rezultatul a depit gama de reprezentare. Dac
rezultatul este interpretat pe 9 bii de exemplu, gama de reprezentare devine [ 256, 255] i rezultatul
va fi
117+12 = 001110101+000001100 = 010000001 = 12910, rezultat corect.
Ca o concluzie preliminar, reinem c pentru a obine rezultate corecte este necesar s
precizm dac se lucreaz sau nu cu bit de semn i pe ci bii se face reprezentarea, pentru c
numai n acest context interpretarea rezultatelor este corect.
n ceea ce privete nmulirea numerelor ntregi cu semn (cu bit de semn), aici problema nu
mai are o rezolvare asemntoare, n sensul c nu putem trata biii de semn la fel cu cei de
reprezentare ai valorii. Astfel, procesorul studiaz biii de semn i ia o decizie n privina semnului
rezultatului. De fapt, se realizeaz funcia logic XOR a biilor de semn. Numerele negative se vor
lua n modul, iar operaiile de nmulire se vor face numai cu numere pozitive. La final, funcie de
semnul rezultatului, se ia decizia reprezentrii corecte a rezultatului.
Spre exemplu, s calculm (-25)x37. Pentru aceasta, procesorul va primi pentru procesare
urmtoarele dou numere:
37 x( 25) = [0]100101 [1]100111
Se analizeaz separat biii de semn i se ia decizia c rezultatul va fi negativ, deci, la final, se va
reprezenta n complement fa de 2. Mai departe se va lucra cu 25, modulul numrului (-25), care se
obine prin complementarea fa de 2 a numrului binar 1100111:
1100111 0011000+1=0011001
Se va reine pentru procesare numai numrul (fr semn) 11001, care se va nmuli cu numrul (fr
semn) 100101, obinnd, aa cum am artat mai sus, valoarea 1110011101. Mai departe, se adaug
bitul de semn, 0 pentru numere pozitive, obinndu-se 01110011101. Acest ultim numr se va
complementa fa de 2, obinndu-se 10001100010+1=[1]0001100011, adic valoarea -1024+99 = -
925, valoarea corect.
Ca o concluzie, pentru a furniza rezultate corecte, procesorul va trebui informat n permanen
despre ce fel de numere prelucreaz (cu sau fr semn) i care este lungimea lor de reprezentare
(toate trebuie s aib aceeai lungime).
Reprezentarea n complement fa de 2 se poate folosi i pentru numerele reale negative, bitul
de semn fiind MSB de la partea ntreag. Astfel, -12.25 poate avea reprezentarea:
12.2510 = 1100 .012 01100 .01
01100 .01 10011 .10 + 0.01 = 10011 .11
10011 .112 = 2 4 + 21 + 2 0 + 2 1 + 2 2 = 16 + 3 + 0.75 = 12.2510
Pentru nmulirea numerelor reale rmn valabile considerentele de la numere ntregi.
n cazul de mai sus, problema reprezentrii numrului negativ a fost rezolvat cu ajutorul
bitului de semn dar problema reprezentrii punctului binar va avea alt rezolvare.
2.3.3 Reprezentarea intern a numerelor reale
Din considerentele de la reprezentarea extern a datelor putem trage alte concluzii importante
din punct de vedere al reprezentrii interne.
Numerele binare ntregi fr semn au aceeai reprezentare att extern ct i intern.
Numerele ntregi cu semn (care n reprezentare extern sunt prefixate cu ) au ca
reprezentare intern un bit de semn, dar care se trateaz deosebit de ceilali bii ai reprezentrii. Toi
ntregii cu semn, care au MSB=1, sunt reprezentai intern n complement fa de 2.
Numerele reale se pot reprezenta identic cu cele ntregi cu semn, cu o precizare: nu se face o
deosebire net ntre biii reprezentrii prii ntregi i cei ai reprezentrii prii fracionare. Acest
28
tratament nedifereniat provine de la reprezentarea tiinific uzual cu mantis i exponent. Fie,
spre exemplu, reprezentarea binar a numrului 12.25: 12.2510 = 1100.01 = 0.110001 x 2 4
Calculatorul poate reprezenta irul de bii 110001 i reine faptul c punctul se pune dup
primii 4 bii ai reprezentrii. Acest lucru se ntmpl i n realitate. Deci, singura deosebire ntre
reprezentarea numerelor reale i a celor ntregi const n faptul c numerele reale necesit o
informaie suplimentar despre aa numitul exponent, n cazul nostru numrul pozitiv 4.
n cele ce urmeaz, vom prezenta tipurile de baz pe care le pot avea datele n reprezentarea
intern.
Tipul unei date determin modul n care procesorul stocheaz i prelucreaz data respectiv.
Cum primele procesoare care au condus la apariia pe pia a primelor calculatoare pentru
neprofesioniti (aa numitele Home Computers) au fost procesoare capabile s prelucreze i s
transmit n paralel 8 bii, a fost natural gruparea a 8 bii ntr-o entitate numit byte.
1B = 8b (adic un byte reprezint 8 bii)
Procesoarele au evoluat, ajungndu-se n prezent la procesoare pe 64 de bii. Cum evoluia lor s-a
fcut trecndu-se succesiv prin multipli de 8 bii, s-au impus i alte entiti de reprezentare a
informaiei, pe care le vom prezenta sintetic n tabelul de mai jos.
Denumire Dimensiune Denumire Notaie
echivalent
Nr. Nr.
byte biti
Byte 1B 8b octet B
Word 2B 16 b cuvnt W
Double_Words 4B 32 b Cuvnt dublu DW
Quad_Words 8B 64 b Cuvnt cvadruplu QW
Ten_Words 10B 80 b TW
A determina reprezentarea intern nseamn s determinm lungimea reprezentrii (de obicei n
multipli de octei), modul de interpretare al biilor ce compun reprezentarea i gama de
reprezentare, adic s determinm magnitudinea (valorile minime i maxime pozitive i negative)
ce pot fi reprezentate n formatul respectiv.
n limbajul C, exist dou tipuri de reprezentare pe care le putem numi principale: tipul ntreg
i tipul real, fiecare avnd i anumite particularizri. Astfel, tipul ntreg (int) include i tipul
caracter (char) iar tipul real (float) include i tipul real extins (double).
Tipurile de date le vom reprezenta de la simplu la complex, n ordinea char, int, float,
double.
Tipurile de baz sunt char, int, float, double i cu ajutorul modificatorilor de tip putem
obine diverse particularizri. Modificatorii pot fi signed, unsigned, short, long.
Ca o generalitate, numerele sunt reprezentate intern lundu-se n considerare bitul de semn,
deci implicit numerele ntregi sau reale au MSB bit de semn. Dac se specific explicit, prin
modificatorul unsigned, nu se mai consider (interpreteaz) bitul de semn.
2.3.3.1 Tipul char
Codul ASCII (American Standard Code for Information Interchange) este un cod de
reprezentare a caracterelor. Prin caracter nelegem unitile de baz care se pot tasta (intrri de la
tastatur), tipri la imprimant sau afia pe ecran. Tastatura reprezint, de exemplu, dispozitivul de
intrare care conine de fapt o ntreag colecie de caractere ce pot fi emise prin apsarea unei taste.
Pentru a fi receptat, emis sau prelucrat de ctre calculator, fiecare caracter are asociat un cod binar
(o combinaie de bii) care l identific n mod unic. Cum cu un octet putem codifica 28 = 256
caractere, octetul s-a dovedit o entitate suficient pentru codificarea caracterelor utilizate n
informatic. n 256 de coduri distincte se pot include literele mari i mici ale alfabetului anglo-
saxon (inclusiv litere specifice diverselor alfabete precum cel chirilic sau particulariti ale
diferitelor ri: , , , , ... n romn, de exemplu). Se mai pot include caractere ce reprezint
numere, semne de punctuaie sau alte caractere de control. Codul ASCII a standardizat aceast
29
codificare, astfel nct el este folosit n cvasitotalitatea calculatoarelor (doar mainframe-urile IBM
mai folosesc un alt cod, mai vechi, numit EBCIDIC). Dac se declar o dat de tip char, ea este
considerat explicit de tipul signed char (cu MSB bit de semn), deci reprezentarea intern este de
forma:

S b6 b5 b4 b3 b2 b1 b0

B it d e s e m n
Gama de reprezentare este cuprins ntre
max = 27 1 = 127
[ 128, 127]
min = 27 = 128
Dac se declar tipul unsigned char, atunci nu se mai consider (interpreteaz) bitul de semn i data
se consider ntreag pozitiv, n gama
max = 2 8 1 = 255
[0, 255]
min = 0
Tabelele de mai sus conin codurile ASCII ale primelor 128 de caractere. Coloana D
semnific valoarea zecimal (decimal) a octetului, coloana H reprezint aceeai valoare
reprezentat n format hexazecimal (baza 16) iar n coloana Sym se reprezint simbolul afiat pe
monitoarele PC.
ntregul alfabet al limbajului C se regsete n mulimea primelor 128 de caractere ASCII.
Restul de 128 de caractere se mai numete i set de caractere extins ASCII i poate fi vizualizat
printr-un program simplu.
Trebuie menionat faptul c reprezentarea datelor n format hexazecimal este foarte rspndit
n tehnica programrii calculatoarelor. Avantajul reprezentrii interne a datelor n format
hexazecimal const n folosirea unui numr mai mic de cifre (de 4 ori mai mic dect numrul de
cifre binare).
Reprezentarea unui numr natural n format hexazecimal se realizeaz cu metoda mpririi
succesive la 16 sau, mai simplu, pornind de la reprezentarea binar a numrului.
Cum mulimea cifrelor hexa conine 16 simboluri (09 i AF), pentru codificarea celor 16
cifre avem nevoie de 4 cifre binare ( 2 4 = 16 ). Pentru a reprezenta un octet vom avea nevoie de 2
cifre hexazecimale i vom proceda astfel:
- se divide octetul n dou grupe de cte 4 bii
- se nlocuiete fiecare grup de 4 bii cu cifra hexazecimal pe care o codific.
De exemplu, s presupunem c avem numrul 217.
21710 = 110110012 = 1101.10012 = D916 = 13 161 + 9 16 0 = 208 + 9 = 217
n acest mod, dac un numr are o reprezentare intern pe un numr de k octei, se poate
reprezenta simplu cu ajutorul a 2k cifre hexazecimale.
n tabelele de mai jos se prezint codificarea ASCII a caracterelor.
Codurile corespunztoare simbolurilor alfanumerice din tabel sunt exact semnalele binare
care se transmit n reprezentarea intern. Cu alte cuvinte, dac la tastatur se tasteaz simbolul a,
atunci circuitele corespunztoare transmit spre calculator semnale binare corespunztoare codului
1010 0001, adic 61H sau 97 n zecimal.
La fel se ntmpl cnd se lucreaz cu procesoare de text sau cnd se tiprete un document la
imprimant. Sistemul de calcul manevreaz codurile ASCII corespunztoare literelor i cifrelor pe
care utilizatorul le poate interpreta.

30
D H Sym D H Sym D H Sym D H Sym
0 0 Null 16 10 32 20 48 30 0
1 1 17 11 33 21 ! 49 31 1
2 2 18 12 34 22 " 50 32 2
3 3 19 13 35 23 # 51 33 3
4 4 20 14 36 24 $ 52 34 4
5 5 21 15 37 25 % 53 35 5
6 6 22 16 38 26 & 54 36 6
7 7 23 17 39 27 ' 55 37 7
8 8 24 18 40 28 ( 56 38 8
9 9 25 19 41 29 ) 57 39 9
10 a LF 26 1a 42 2a * 58 3a :
11 b 27 1b 43 2b + 59 3b ;
12 c 28 1c 44 2c , 60 3c <
13 d CR 29 1d 45 2d - 61 3d =
14 e 30 1e 46 2e . 62 3e >
15 f 31 1f 47 2f / 63 3f ?

D H Sym D H Sym D H Sym D H Sym


64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4a J 90 5a Z 106 6a j 122 7a z
75 4b K 91 5b [ 107 6b k 123 7b {
76 4c L 92 5c \ 108 6c L 124 7c |
77 4d M 93 5d ] 109 6d M 125 7d }
78 4e N 94 5e ^ 110 6e n 126 7e ~
79 4f O 95 5f _ 111 6f o 127 7f

2.3.3.2 Tipul int


Acest tip se folosete pentru reprezentarea numerelor ntregi cu sau fr semn. Odat cu
standardizarea ANSI C din 1989, s-a trecut la modul de reprezentare a ntregilor impus de noul
procesor Intel 80386 dotat i cu coprocesorul matematic Intel 80387.
MSB

S b30 O ctetul 1
O ctetul 2
O ctetul 3
b0 O ctetul 4

LS B
Tipul int este identic cu signed int i utilizeaz o reprezentare pe 4B a numerelor ntregi cu
semn. Reprezentarea pe 4 octei duce la posibilitatea mririi gamei de reprezentare astfel:
31
max = 2 31 1
( ) 3
( )3
; 2 31 = 2 2 30 = 2 210 2 10 3 2 10 9
min = 2 31
Rezult c putem reprezenta numere ntregi n gama:
[ 2.1475 10 ] [ 2 10 , 2 10 ]
9 9 9

unsigned int nu va mai lua n considerare bitul de semn, astfel nct reprezentarea intern este
de forma din figura de mai jos. Evident,
max = 2 32 1

min = 0
( ) 3
( )
3
; 2 32 = 4 2 30 = 4 210 4 10 3 4 10 9

Gama de reprezentare se poate schimba cu ajutorul modificatorilor short sau long.


MSB

S b1 4
b0

LSB
short int se va reprezenta pe 2B, sub forma
max = 215 1
; 215 = 2 5 210 = 32 210 [ 32768, 32767] .
min = 215

unsigned short int va schimba gama de reprezentare n [0, 65535]


long int se va reprezenta pe 8B i va conduce la o gam imens de reprezentare a numerelor
ntregi, lucru dovedit de
( )
6
2 63 = 2 3 210 8 1018 = 9.2234 1018
[
unsigned long int va considera numai numere ntregi pozitive n gama 0, 1.844 1019 .]
2.3.3.2 Tipul float
Acest tip de reprezentare este de tip real, fiind cunoscut i ca reprezentare n virgul mobil
(floating point). Acest tip descrie mecanismul de baz prin care se manipuleaz datele reale.
Conceptul fundamental este acela de notaie tiinific, prin care orice numr se poate exprima ca un
numr zecimal (deci, cu punct zecimal) multiplicat cu o putere a lui zece sau ca un numr real binar
(cu punct binar) multiplicat cu o putere a lui 2.
5.2510 = 101.01 = 1.0101 x 2 2 = 0.10101 x 2 3
Se observ cum stocarea n calculator a unei date floating-point necesit trei pri:
- bitul de semn (sign)
- mantisa, fracia (significand)
- exponent (exponent)
Folosind formatul specific I80386, n limbajul C se disting trei tipuri de date reale:
- float , cu reprezentare pe 4 octei (32 bii, double word)
- double, cu reprezentare pe 8 octei (64 bii, quad word)
- long double, cu reprezentare pe 10 octei (80 bii, ten word)
M SB

b31 b30

b0

LSB

32
Exponent Significand
S
biased

31 30 23 22 0
Exponent = 8b Significand = 23b float
S
Bias = 7FH=127

63 62 52 51 0
Exponent = 11b Significand = 52b double
S
Bias = 3FFH=1023

79 78 64 63 0
Exponent = 15b Significand = 52b long
S
Bias = 3FFFH=16383 double
Tipurile float i double sunt formate pentru numere reale ce exist numai n memorie. Cnd
un astfel de numr este ncrcat de procesor n stiva pentru numere reale (flotante) pentru prelucrare
sau ca rezultat al prelucrrii, el este automat convertit la formatul long double (sau extended).
n cazul n care acest numr se stocheaz n memorie, el se convertete la tipul float sau
double. Toate cele trei subtipuri reale au un format comun, care va fi prezentat n continuare. Ceea
ce le deosebete este numrul de bii alocai pentru exponent i pentru mantis, precum i
interpretarea biilor mantisei (significand).
Semnul are alocat n toate formatele un singur bit: 0 pentru numere pozitive i 1 pentru
numere negative.
Mrimea cmpului exponent variaz cu formatul i valoarea sa determin ci bii se mut la
dreapta sau la stnga punctului binar.
Cmpul significand este analogul mantisei n notaia tiinific. El conine toii biii
semnificativi ai reprezentrii, deci biii semnificativi att ai prii ntregi ct i ai prii fracionare
cu singura restricie ca aceti bii s fie consecutivi. Deoarece punctul binar este mobil, cu ct sunt
mai muli bii alocai prii ntregi, cu att vor fi mai puini pentru partea fracionar i invers. Cu
ct formatul este mai larg, cu att se vor reprezenta mai precis numerele.
Pentru a salva un spaiu preios de stocare, nici unul dintre cele trei formate float nu stocheaz
zerouri nesemnificative. De exemplu, pentru numrul 0.0000101 = 0.101x 2 4 cmpul significand va
stoca numrul 101, nu i cele 4 zerouri nesemnificative ale prii fracionare. Pentru a salva i mai
mult spaiu, pentru formatele float i double cmpul significand nu va conine primul bit
semnificativ care obligatoriu este 1. Ctignd acest bit (numit bit phantom), se dubleaz gama de
reprezentare. Formatul long double va conine totui bitul de semn 1 cel mai semnificativ. Punctul
binar se pune exact naintea primului bit din cmpul significand, adic dup bitul 1 implicit
(phantom). n cazul long double, se aplic dup primul bit 1.
Pentru a uura operarea cu aceste numere, cmpul exponent nu este stocat ca un numr ntreg
cu semn, ci este decalat (normalizat, cu bias) pentru a reprezenta numai numere pozitive (deci
exponentul este interpretat ca numr natural fr semn). Biasul adugat se scade pentru a afla
exponentul exact. Avantajul exponentului decalat const,pe lng faptul c nu mai are nevoie de bit
de semn, n faptul c pentru a compara dou numere reale putem ncepe prin compararea biilor
pornind de la MSB ctre LSB, cel mai mare fiind cel care are 1 la primul bit diferit. Se decide astfel
foarte rapid care numr este cel mai mare. Ca exemplu, s considerm un format float n care se
stocheaz:
Sign = 0
Exponent = 10000010 = 13010
Significand = 100100000
Valoarea real a exponentului va fi 130 - 127 = 3
Biii cmpului significand se obin adugnd MSB phantom, deci acetia vor fi 11001000...00
Numrul real care s-a stocat este:
0.110010...00 x 24 = 1100.1 =12.5

33
Reprezentarea intern a numrului 12.5, pe 4 octei (float), este urmtoarea:
Semn

0 1 0 0 0 0 0 1
0 1 0 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

LSB
Cu alte cuvinte, putem spune c reprezentarea intern a numrului real 12.5 este (n format
hexazecimal):
12 .5 10 = 41480000 16
n cazul n care dorim s reprezentm numrul negativ 12.5, singurul bit care se va modifica va fi
bitul de semn, care devine 1. Astfel, reprezentarea intern n format float a numrului negativ real
12.5 este:
Semn

1 1 0 0 0 0 0 1
0 1 0 0 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

LSB
12 . 5 10 = C 1480000 16
Dac numrul 12.5 se reprezint n formatul double, deci pe 8 octei, atunci reprezentarea sa
intern se va realiza astfel:
- bitul de semn va fi 0
- exponentul nu va mai fi pe 8 bii ca la tipul float, ci pe 11 bii, deci se va schimba i bias,
care va fi 1023. Atunci:
3 + 1023 = 1026 = 1024 + 2 = 1000000001 0
exponent 1 bias
- significand va fi acelai ca la tipul float, dar reprezentat pe 52 de bii
Semn

0 1 0 0 0 0 0 0
0 0 1 0 1 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

LSB
12 .510 = 4029000000 000000 16
Reinem c la numere reale numai bitul de semn indic dac numrul este pozitiv sau negativ,
mantisa i exponentul se reprezint ca numere naturale fr bit de semn. Formatele prezentate mai
sus respect standardul IEEE 754 de reprezentare a intern a numerelor reale n computere.

34
Se poate pune o ntrebare legitim: de ce bias-ul n cazul float spre exemplu este 127? Pentru
a rspunde la aceast ntrebare, putem face urmtorul raionament:
- exponentul cu semn este reprezentat pe 8 bii, deci este n gama de reprezentare
[ 128, + 127] .
- pentru a obine un exponent pozitiv, adugm numrul 128.
- deoarece bitul phantom nu este reprezentat, exponentul trebuie micorat cu o unitate pentru
a indica unde anume se poziioneaz exact punctul binar.
- Exponent pozitiv = exponent +128 1 = exponent + bias
de unde rezult evident faptul c bias = 127 n cazul tipului float.
n final s analizm un exemplu de procesare a produsului a dou numere reale. Vrem s
calculm valoarea 5.25 x 1.5. Pentru aceasta, vom scrie cei doi factori ai produsului n forma:
.10101
5.2510 = 101.012 = .10101 23 .11


1.510 = 1.12 = .11 2
1
; 10101

5.25 1.5 = [(.10101) (.11)] 2
3+1 10101

.0111111
5.25 1.5 = .0111111 24 = 111.111 = 7.875
Se observ cum cmpurile exponent i significand sunt procesate separat, n final corelndu-se
forma de reprezentare intern.
2.3.4 Game de reprezentare pentru numerele reale
Gama de reprezentare pentru fiecare din tipurile reale prezentate mai sus se calculeaz lund
n considerare cel mai mare numr i cel mai mic numr posibil a fi scris n respectiva reprezentare.
Astfel, exponentul este decisiv pentru gama de reprezentare.
La tipul float, avem
exponent _ biasmax = 255 exponent _ realmax = 255 127 = 128

( )12
nmax = 2128 = 28 210 = 256 (1024)12 256 1036 = 2.56 1038
Valoarea maxim exact, calculat fr a aproxima ca mai sus:
210 = 1024 1000 = 103 este n max = 3.4028 10 38
exponent_ biasmin = 0 exponent_ realmin = 0 127 = 127

( )
nmin = 2127 = 27 210
12
( )
= 23 210 210
12
( )
= 8 210
13
8 1039
Valoarea pozitiv minim exact este n min = 5.8775 10 39
La tipul double vom obine:
exponent _ biasmax = 2047 exponent _ realmax = 2047 1023 = 1024

( )
nmax = 21024 = 24 210
102
= 16 (1024)306 16 10306 = 1.6 10307
Valoarea maxim exact este n max = 1.7 10 308
exponent _ biasmin = 0 exponent _ realmin = 0 1023 = 1023

( )
nmin = 21023 = 23 210
102
.125 10306
Valoarea pozitiv minim exact este n min = 1.1125 10 308
Efectund aceleai consideraii i calcule pentru tipul long double, vom obine
n max = 1.1 10 4932

n min = 3.4 10 4932

35
2.3.5 Codificare BCD
Procesorul I80386 este considerat primul procesor care are capacitatea de a procesa operaii
aritmetice asupra unor numere reprezentate n zecimal codificat binar (BCD, binary-coded decimal)
n locul formatelor binare standard. Reprezentarea numerelor n cod BCD este folosit pentru a face
numerele binare mai accesibile operatorului uman. Neajunsul acestei reprezentri este faptul c
numerele BCD ocup spaiu de stocare mai mare dect numerele binare. Ele sunt mai uor de
interpretat de ctre programatorul uman, pentru computer neavnd nici un fel de relevan.
Procesorul 80386 poate manevra dou tipuri de formate BCD: npachetat i nenpachetat (packed
BCD i unpacked BCD). n formatul unpacked BCD, o cifr zecimal se stocheaz pe un octet. Spre
exemplu, cifra zecimal 5 va fi reprezentat intern sub forma 00001001. Formatul packed BCD
stocheaz dou cifre zecimale pe un octet, crescnd capacitatea de stocare intern precum i gama
de reprezentare pe un acelai numr de octei. Ambele codificri folosesc reprezentarea pe 4 bii a
cifrelor zecimale. Spre exemplu, numrul 9817 se stocheaz pe 4 octei n format unpacked BCD i
pe 2 octei n format packed BCD:
unpacked BCD: 9817 = 0000 1001 0000 1000 0000 0001 0000 0111
packed BCD: 9817 = 1001 1000 0001 0111
Se observ cum valoarea maxim care se poate stoca pe un octet este 9 pentru unpacked BCD,
99 pentru packed BCD i 255 pentru codificarea binar fr semn standard.
Toate formatele reale prezentate se conformeaz standardului IEEE 754 pentru reprezentarea
numerelor n virgul mobil n format binar.
Ca o concluzie la acest capitol, decisiv pentru nelegerea dezvoltrilor ulterioare, putem
sintetiza urmtoarele:
Reprezentarea extern a numerelor se refer la modul n care operatorul uman accept
schimbul de date cu calculatorul. Acest schimb de date are dublu sens: de la operatorul uman ctre
calculator i invers.
Reprezentarea extern este de obicei zecimal i are un format aproape identic cu formatul
matematic uzual: simbol de semn prefixat, punct zecimal, mantis sau exponent. Numerele naturale
se mai pot reprezenta i n format octal sau hexazecimal. n format extern se introduc datele de la
tastatur pentru prelucrare i se obin pe monitor sau la imprimant rezultatele oferite de calculator.
Reprezentarea intern a numerelor se refer la modul n care se stocheaz datele n memoria
RAM a calculatorului i respectiv n regitrii interni ai microprocesorului. Aceast reprezentare
intern este legat de noiunea de tip de dat.
Tipul de dat ntreg (integer) se reprezint intern pe 2, 4 sau 8 octei n complement fa de 2,
cu cel mai semnificativ bit (MSB) bit de semn: 1 pentru numere ntregi negative i 0 pentru numere
ntregi pozitive. Un caz particular de dat de tip ntreg este tipul character, interpretat ca ntreg pe
un octet.
Tipul de dat real (float) se reprezint intern pe 4, 8 sau 10 octei i conine 3 cmpuri de bii
distincte: bit de semn, cmp mantis i cmp exponent, de lungimi corespunztoare.
Dac se specific explicit, toate numerele se pot defini fr semn (unsigned), caz n care
calculatorul nu mai interpreteaz bitul de semn (MSB) diferit ci l include n cmpul de reprezentare
al mrimii, crescnd gama de reprezentare.

36

S-ar putea să vă placă și