Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Operatori logici pe biti

c



+ Font mai mare | - Font mai mic



Operatori logici pe biti

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1387
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved