Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
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 :