domingo, 21 de junho de 2009

Operadores Bit-a-Bit (Bitwise Operators)

Operadores Bit-a-Bit
1. AND
O operador AND é representado por "&". Uma expressão onde é utilizada o operador AND, para ser verdadeira (TRUE) os bits têm ambos de possuir o valor 1. Em caso de um, ou os dois serem 0 a expressão devolve o valor 0. Como qualquer valor multiplicado por 0 é igual a 0, o operador AND é muitas vezes associado à multiplicação.

Tabela da verdade:

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Exemplo: $a = $b & $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 &
10000111
--------------------
10000011
(...)
$a = 10000011;


2. OR

O operador OR é representado por "|". Uma expressão para ser verdadeira pelo menos um dos bits tem de ser 1, ou seja, só se os dois bits forem igual a 0 é que uma expressão é falsa.

Tabela da verdade:

0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

Exemplo: $a = $b | $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 |
10000111
--------------------
10101111
(...)
$a = 10101111;


3. NOT
O operador NOT é um operador unário e é representado por "~". A operação exercida por este operador é de negação lógica sobre os bits, isto é, torna falso onde é verdadeiro e torna verdadeiro onde é falso.

Tabela da verdade:

NOT 1 = 0
NOT 0 = 1


Exemplo: $a = ~$b;
Supondo que $b = 10101011;

$a = ~(10101011);
(...)
$a = 01010100;


4. XOR
O operador XOR (Ou Exclusivo) é representado por "^". Com este operador, se os bits forem diferentes os bits resultantes são verdadeiros.

Tabela da verdade:

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0


Exemplo: $a = $b ^ $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 ^
10000111
-------------------------------
00101100
(...)
$a = 00101100;


5. Shifts
O operador Shift desloca N bits à esquerda ou direita dependendo se for utilizado Shift Left ou Shift Right. Devido à rapidez, são muitas vezes usadas na programação como multiplicador ou divisor como substituição dos operadores "*" e "/".

6. Shift Left (Deslocar à esquerda)
O operador Shift Left desloca à esquerda N bits. Pode-se entender o shift left como uma multiplicação por 2 elevado a N. É de salientar que um número elevado a 0 é igual a 1, logo, o shift left de 0 equivale à multiplicação por 1.

Exemplo: $a = 10101011;

$a << 0 =" 10101011;" 1 =" 01010110;" 2 =" 10101100;" 3 =" 01011000;" 4 =" 10110000;" 5 =" 01100000;" a =" 10101011;">> 0 = 10101011;
$a >> 1 = 01010101;
$a >> 2 = 00101010;
$a >> 3 = 00010101;
$a >> 4 = 00001010;
$a >> 5 = 00000101;

Nenhum comentário:

Postar um comentário