17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

if (*s ==0) return 0; // un sir vid are lungime zero<br />

else return 1+ length(s+1); // lungime subsir urmator plus 1<br />

De asemenea trebuie retinut cã operatorii ++ si – sunt operatori unari, iar operatorii<br />

unari se aplicã de la dreapta la stânga. Deci expresia *p++ diferã de expresia (*p)++<br />

<strong>în</strong> care ‘*’ este operator unar de indirectare printr-un pointer.<br />

Prelucrãri la nivel de bit<br />

O variabilã este un nume pentru o zonã de memorie, care contine un sir de cifre<br />

binare (biti). Operatorii aritmetici interpreteazã sirurile de biti ca numere binare cu<br />

semn. Anumite aplicatii dau alte interpretãri sirurilor de biti si necesitã operatii la nivel<br />

de bit sau grupuri de biti care nu sunt multiplii de 8.<br />

Operatorii la nivel de bit din C sunt aplicabili numai unor operanzi de tip <strong>în</strong>treg<br />

(char, int, long). Putem deosebi douã categorii de operatori pe biti:<br />

- Operatori logici bit cu bit<br />

- Operatori pentru deplasare cu un numãr de biti<br />

Operatorul unar '~' face o inversare logicã bit cu bit a operandului si poate fi util <strong>în</strong><br />

crearea unor configuratii binare cu multi biti egali cu 1, pe orice lungime. Exemplu:<br />

~0x8000 // este 0x7FFF<br />

Operatorul pentru produs logic bit cu bit '&' se foloseste pentru fortarea pe zero a<br />

unor biti selectati printr-o mascã si pentru extragerea unor grupuri de biti dintr-un sir<br />

de biti. Pentru a extrage cei 4 biti din dreapta (mai putini semnificativi) dintr-un octet<br />

memorat <strong>în</strong> variabila 'c' vom scrie:<br />

c & 0x0F<br />

unde constanta 0x0F (<strong>în</strong> baza 16) reprezintã un octet cu primii 4 biti zero si ultimii 4<br />

biti egali cu 1.<br />

Operatorul pentru sumã logicã bit cu bit '|' se foloseste pentru a forta selectiv pe 1<br />

anumiti biti si pentru a reuni douã configuratii binare <strong>în</strong>tr-un singur sir de biti.<br />

Exemplu:<br />

a | 0x8000 // pune semn minus la numarul din a<br />

Operatorul pentru sumã modulo 2 ("sau exclusiv") '^' poate fi folosit pentru<br />

inversarea logicã sau pentru anularea unei configuratii binare.<br />

Operatorii pentru deplasare stânga '' se folosesc pentru<br />

modificarea unor configuratii binare. Pentru numere fãrã semn au acelasi efect cu<br />

<strong>în</strong>multirea si respectiv împãrtirea cu puteri ale lui 2. Exemplu:<br />

a >>10 // echivalent cu a / 1024<br />

Functia urmãtoare afiseazã prin 4 cifre hexa un sir de 16 biti primit ca parametru :

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!