Operações Binárias

Complementar de Um

Complementar do valor da variável até um. O valor da expressão contém 1 em todos os dígitos onde o valor da variável contem 0, e 0 em todos os demais dígitos onde a variável contem 1.

b = ~n;

Exemplo:

   char a='a',b;
   b=~a;
   Print("a = ",a, "  b = ",b);  
// O resultado será:
// a = 97   b = -98

Deslocamento para Direita

A representação binária de x é deslocada para direita em y dígitos. Se o valor a ser deslocado é de um tipo sem sinal (unsigned type), o deslocamento lógico para a direita é feito, isto é, os bits do lado esquerdo liberados serão preenchido com zeros.

Se o valor a ser desloca é de um tipo com sinal (signed type), o deslocamento aritmético para direita é feito, isto é, os dígitos do lado esquerdo liberados serão preenchidos com o valor do bit de sinal (sign bit) (se o número é positivo, o valor do bit de sinal é 0, se o número é negativo, o valor do bit de sinal é 1).

x = x >> y;

Exemplo:

   char a='a',b='b';
   Print("Antes:  a = ",a, "  b = ",b); 
//--- deslocamento para direita
   b=a>>1;
   Print("Após:   a = ",a, "  b = ",b); 
// O resultado será:
// Antes:  a = 97   b = 98
// Após:   a = 97   b = 48

Deslocamento para Esquerda

A representação binária de x é deslocada para esquerda em y dígitos, os dígitos do lado direito liberados são preenchidos com zero.

x = x << y;

Exemplo:

   char a='a',b='b';
   Print("Antes:  a = ",a, "  b = ",b); 
//--- deslocamento para a esquerda
   b=a<<1;
   Print("Após:   a = ",a, "  b = ",b); 
// O resultado será:
// Antes:  a = 97   b = 98
// Após:   a = 97   b = -62

Não é recomendável deslocar um número maior ou igual de bits que o comprimento da variável deslocada, porque o resultado de tal operação é indefinido.

Operação AND bit a bit

A operação AND bit a bit em representações binárias de x e y. O valor da expressão contem 1 (TRUE) em todos os dígitos onde ambos x e y contém não-zero, e contem 0 (FALSE) em todos os demais dígitos.

b = ((x & y) != 0);

Exemplo:

   char a='a',b='b';
//--- operação AND
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// O resultado será:
// a = 97   b = 98
// a & b = 96

Operação OR bit a bit

A operação OR bit a bit de representações binárias de x e y. O valor da expressão contem 1 em todos os dígitos onde x ou y não contém 0, e contém 0 em todos os demais dígitos.

b = x | y;

Exemplo:

   char a='a',b='b';
//--- operação OR
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// O resultado será:
// a = 97   b = 98
// a | b = 99

Operação OR Exclusivo bit a bit

A operação OR exclusivo bit a bit (eXclusive OR) de representações binárias de x e y. O valor da expressão contem 1 em todos os dígitos onde x e y tem valores binários diferentes, e contém 0 em todos os demais dígitos.

b = x ^ y;

Exemplo:

   char a='a', b='b';
//--- operação OR Exclusivo
   char c=a^b;
   Print("a = ",a,"  b = ",b);
   Print("a ^ b = ",c);
// O resultado será:
// a = 97   b = 98
// a ^ b = 3

Operações bit a bit são realizadas somente com inteiros.

Também Veja

Regras de Precedência