Un exemplu tipic de utilizare a operatorilor la nivel de bit
este implementarea unei multimi ca vector de biti. În acest caz, un
bit dintr-un întreg fara semn se asociaza unui element din
multime, iar valoarea 1, respectiv 0 a unui bit semnifica prezenta,
respectiv absenta elementului din multime. Numarul de elemente din
multime este limitat la numarul de biti disponibili. În acest caz
operatorul binar & este interpretat ca si intersectie, iar ca
si reuniune.
Alte utilizari ale acestor operatori se întâlnesc în programele dedicate operatiilor hardware.
Indiferent de scopul în care sunt utilizati operatorii, maniera în care sunt folositi este în general aceeasi. În cele ce urmeaza, se vor descrie pe scurt principiile de baza ale utilizarii lor.
Atentie! Operatorii la nivel de bit nu modifica valoarea operanzilor (se comporta ca si operatorii aritmetici obisnuiti), astfel o operatie n « 2 va rezulta într-un nou numar, fara a modifica valoarea variabilei n. Pentru a modifica valoarea variabilei n trebuie sa avem o atribuire:
n = n « 2;
În general, operatorul si (&) este folosit pentru a masca anumiti biti dintr-un numar:
n = n & 177
va pune pe 0 bitii din n corespunzatori zero-urilor din reprezentarea binara a numarului 177 (adica 10110001), bitii corespunzatori unu-rilor ramânând nemodificati.
Operatorul sau () se comporta asemanator, doar
ca elementul neutru nu este 1 ca la si, ci 0.
Trebuie facuta distinctia între operatorii la nivel de bit (& si
) si operatorii logici (&& si
). De exemplu, daca
x=1 si y=2, atunci x & y va fi 0, iar
x && y va fi 1.
Operatorii de deplasare si
realizeaza deplasarea bitilor
din operandul stâng cu atâtea pozitii câte sunt indicate de
operandul drept. În cazul deplasarii la stânga (
) bitii din
stânga se vor pierde, iar în dreapta numarului vor fi introduse
cifre de 0. În cazul deplasarii la dreapta, bitii din dreapta se
pierd, iar în stânga se introduc biti de 0, în caz ca numarul
era de tip fara semn (unsigned, char) sau biti
egali cu bitul de semn (cel mai din stânga bit) în cazul numerelor
de tip cu semn.
Operatorul de negare realizeaza complementarea tuturor
bitilor unui numar. Se impun doua observatii legate de acest
operator: