CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
: | |
Lista operatorilor logici pe biti este redata mai jos in ordinea descrecatoare a prioritatilor:
(operator unar; complement fata de 1)
>> << (deplasari la dreapta, respectiv la stanga)
& (SI pe biti)
(SAU-EXCLUSIV pe biti)
(SAU pe biti)
Operatorul "~", fiind unar, are aceeasi prioritate ca si ceilalti operatori unari ai limbajului C. El schimba fiecare bit 1 al operandului in 0 si invers.
Operatorul ">>" realizeaza deplasarea la dreapta care este echivalenta cu o impartire intreaga cu puteri a lui 2; a >> 3 este echivalenta cu [a/23].
Operatorul "<<" realizeaza deplasarea la stanga care este echivalenta cu o inmultire cu puteri a lui 2; a << 3 este echivalenta cu a*8.
Pentru operatorii &, |, ^ dam in continuare tabelele operatiilor:
& 0 1 | 0 1 ^ 0 1
0 0 0 0 0 1 0 0 1
1 0 1 1 1 1 1 1 0
Observatii:
1o. Operanzii care nu ocupa un cuvant (16 biti) se extind la un cuvant. De exemplu expresia ~0 are ca rezultat un cuvant cu toti biti egali cu 1.
2o. Operatorii logici pe biti se executa bit cu bit spre deosebire de operatorii logici care se evalueaza global. De exemplu daca x=2 si y=1 sunt variabile de tipul int atunci:
x&&y are valoarea 1 pentru ca ambii operanzi sunt diferiti de 0.
x&y are valoarea 0 conform schemei de mai jos
x= 0000 0000 0000 0010
y= 0000 0000 0000 0001
x&y= 0000 0000 0000 0000
3o. Operatorul & se foloseste frecvent pentru a anula biti din configuratia unui cuvant, iar operatorul | pentru a seta (pune) biti intr-un anumit mod.
4o. Operanzii trebuie sa fie intregi (de tipul int sau long).
5o. Atentie la deplasari nu se modifica valoarea operandului; deci trebuie sa facem o atribuire; de exemplu a = a << 3 va modifica valoarea lui a pe cand a << 3 nu modifica valoarea lui a.
Exemple:
Fie declaratia:
int i;
atunci expresia i >> 8 & 255 are ca rezultat valoarea celui mai semnificativ octet a lui i; i >> 8 deplaseaza octetul mai semnificativ al lui i in pozitia mai putin semnificativa; se face apoi un SI logic pe biti cu masca 255 care pastreaza octetul mai putin semnificativ.
2) Fie expresia: (x >> 6) & ~(~ 0 << 3)
Sa presupunem ca x are valoarea in biti: 1010 1011 1000 1101.
Atunci x>>6 are valoarea: 1111 1110 1010 1110
Al doilea operand pregateste o masca astfel:
~0 1111 1111 1111 1111
~0<<3 1111 1111 1111 1000
~(~0<<3) 0000 0000 0000 0110
Rezultatul final este dat de:
0000 0000 0000 0111
1111 1110 1010 1110
0000 0000 0000 0110
Practic s-a obtinut valoarea bitilor 8,7,6 a lui x (numerotati de la dreapta incepand cu 0).
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1463
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved