C ++

Operadores C ++ Bitwise

Operadores C ++ Bitwise
Neste artigo, vamos discutir os operadores bit a bit na linguagem de programação C ++. Veremos vários exemplos de trabalho para entender as operações bit a bit em detalhes. Em C ++, os operadores bit a bit trabalham no nível de bit individual.

Breve Visão Geral dos Operadores Bitwise

Um operador é um símbolo que instrui o compilador a realizar certas operações matemáticas ou lógicas. Existem vários tipos de operadores em C ++, como:

  1. Operadores aritméticos
  2. Operadores lógicos
  3. Operadores relacionais
  4. Operadores de atribuição
  5. Operadores bit a bit
  6. Operadores diversos

Todos os operadores Bitwise trabalham no nível de bit individual. O operador bit a bit só pode ser aplicado aos tipos de dados inteiros e caracteres. Por exemplo, se você tiver uma variável do tipo inteiro com o tamanho de 32 bits e aplicar a operação NOT bit a bit, o operador NOT bit a bit será aplicado a todos os 32 bits. Então, eventualmente, todos os 32 bits na variável serão invertidos.

Existem seis operadores bit a bit diferentes disponíveis em C ++:

  1. OR bit a bit [representado como “|”]
  2. AND bit a bit [representado como “&”]
  3. NÃO bit a bit [representado como “~”]
  4. XOR bit a bit [representado como “^”]
  5. Shift à esquerda bit a bit [representado como “<<”]
  6. Deslocamento à direita bit a bit [representado como “>>”]

Tabela de verdade OR bit a bit

O operador OR bit a bit produz 1 quando pelo menos um operando é definido como 1. Aqui está a tabela verdade para o operador OR bit a bit:

Bit-1 Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Tabela de verdade AND bit a bit

O operador AND bit a bit produz 1 quando ambos os operandos são definidos como 1. Aqui está a tabela verdade para o operador AND bit a bit:

Bit-1 Bit-2 Bit-1 e Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Tabela Bitwise NOT Truth

O operador NOT bit a bit inverte o operando. Aqui está a tabela verdade para o operador NOT bit a bit:

Bit-1 ~ Bit-1
0 1
1 0

Tabela de verdade XOR bit a bit

O operador bit a bit XOR produz 1 se, e somente se, um dos operandos for definido como 1. Aqui está a tabela verdade para o operador AND bit a bit:

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Operador de deslocamento à esquerda bit a bit

O operador Bitwise Left Shift desloca todos os bits à esquerda pelo número especificado de bits especificados. Se você deslocar para a esquerda todos os bits dos dados por 1, os dados originais serão multiplicados por 2. Da mesma forma, se você deslocar para a esquerda todos os bits dos dados por 2, os dados originais serão multiplicados por 4.

Operador de deslocamento à direita bit a bit

O operador Bitwise Right Shift desloca todos os bits pelo número especificado de bits especificados. Se você deslocar para a direita todos os bits dos dados por 1, os dados originais serão divididos (divisão inteira) por 2. Da mesma forma, se você deslocar para a direita todos os bits dos dados por 2, os dados originais serão divididos (divisão inteira) por 4.

Exemplos

Agora, uma vez que entendemos o conceito básico de operações bit a bit, vamos dar uma olhada em alguns exemplos, que o ajudarão a entender as operações bit a bit em C ++:

Os exemplos 7 e 8 são para demonstrar o uso real de operadores bit a bit na linguagem de programação C ++.

Exemplo-1: Operador OR bit a bit

Neste programa de exemplo, vamos demonstrar o operador Bitwise OR.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado = 0;
// Operação OR bit a bit
resultado = first_num | second_num;
// imprime os números de entrada
cout << endl;
display ("O primeiro número é =", primeiro_num);
display ("O segundo número é =", segundo_num);
// imprime o valor de saída
display ("primeiro_num | segundo_num =", resultado);
cout << endl;
return 0;

Exemplo 2: Operador AND bit a bit

Neste programa de exemplo, ilustraremos o operador AND bit a bit.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado = 0;
// Operação AND bit a bit
resultado = primeiro_num & segundo_num;
// imprime os números de entrada
cout << endl;
display ("O primeiro número é =", primeiro_num);
splay ("O segundo número é =", segundo_num);
// imprime o valor de saída
exibir ("primeiro_num & segundo_num =", resultado);
cout << endl;
return 0;

Exemplo-3: Operador NOT bit a bit

Neste programa de exemplo, entenderemos como o operador Bitwise NOT funciona em C++.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado_1 = 0, resultado_2 = 0;
// Operação NOT bit a bit
resultado_1 = ~ primeiro_num;
resultado_2 = ~ segundo_num;
// imprime os números de entrada e o valor de saída
cout << endl;
display ("O primeiro número é =", primeiro_num);
exibir ("~ primeiro_num =", resultado_1);
cout << endl;
// imprime os números de entrada e o valor de saída
display ("O segundo número é =", segundo_num);
exibir ("~ segundo_num =", resultado_2);
cout << endl;
return 0;

Exemplo 4: Operador XOR bit a bit

Este programa pretende explicar como o operador Bitwise XOR funciona em C++.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado = 0;
// Operação XOR bit a bit
resultado = primeiro_num ^ segundo_num;
// imprime os números de entrada
cout << endl;
display ("O primeiro número é =", primeiro_num);
display ("O segundo número é =", segundo_num);
// imprime o valor de saída
display ("primeiro_num ^ segundo_num =", resultado);
cout << endl;
return 0;

Exemplo 5: Operador de deslocamento à esquerda bit a bit

Agora, veremos o exemplo do operador Bitwise Left Shift. Neste programa, declaramos dois números, primeiro_num e segundo_num do tipo inteiro. Aqui, o “primeiro_num” é desviado para a esquerda em um bit, e o “segundo_num” é desviado para a esquerda em dois bits.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado_1 = 0, resultado_2 = 0;
// Operação de deslocamento à esquerda bit a bit
resultado_1 = primeiro_num << 1;
resultado_2 = segundo_num << 2;
// imprime os números de entrada e o valor de saída
cout << endl;
display ("O primeiro número é =", primeiro_num);
display ("first_num << 1     =  ", result_1);
cout << endl;
// imprime os números de entrada e o valor de saída
display ("O segundo número é =", segundo_num);
display ("segundo_num << 2    =  ", result_2);
cout << endl;
return 0;

Exemplo-6: Operador de deslocamento à direita bit a bit

Agora, veremos outro exemplo para entender o operador Bitwise Right Shift. Declaramos dois números, primeiro_num e segundo_num do tipo inteiro. Aqui, o “primeiro_num” é deslocado para a direita em um bit, e o “segundo_num” é deslocado para a direita em dois bits.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9, resultado_1 = 0, resultado_2 = 0;
// Operação Bitwise Right Shift
resultado_1 = primeiro_num >> 1;
resultado_2 = segundo_num >> 2;
// imprime os números de entrada e o valor de saída
cout << endl;
display ("O primeiro número é =", primeiro_num);
display ("primeiro_num >> 1 =", resultado_1);
cout << endl;
// imprime os números de entrada e o valor de saída
display ("O segundo número é =", segundo_num);
exibir ("segundo_num >> 2 =", resultado_2);
cout << endl;
return 0;

Exemplo-7: Definir bit

Este exemplo pretende mostrar como definir um determinado bit usando operadores bit a bit.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9;
// imprime o número de entrada - first_num
cout << endl;
display ("O primeiro número é =", primeiro_num);
// Defina o 5º bit
first_num | = (1UL << 5);
// Imprimir saída
display ("Definir 5º bit de first_num =", first_num);
cout << endl;
// imprime o número de entrada - segundo_num
cout << endl;
display ("Second Number is =", second_num); // Definir 6º bit
segundo_num | = (1UL << 6);
// Imprimir saída
display ("Definir o 6º bit do segundo_num =", segundo_num);
cout << endl;
return 0;

Exemplo-8: Bit de limpeza

Este exemplo pretende mostrar como limpar um determinado bit usando operadores bit a bit.

#incluir
#incluir
#incluir
usando namespace std;
// função display ()
void display (string print_msg, número int)

bitset<16> myBitSet (número);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int primeiro_num = 7, segundo_num = 9;
// imprime o número de entrada - first_num
cout << endl;
display ("O primeiro número é =", primeiro_num);
// Limpar o 2º bit
first_num & = ~ (1UL << 2);
// Imprimir saída
display ("Definir segundo bit de first_num =", first_num);
cout << endl;
// imprime o número de entrada - segundo_num
cout << endl;
display ("O segundo número é =", segundo_num);
// Limpar o terceiro bit
segundo_num & = ~ (1UL << 3);
// Imprimir saída
display ("Definir terceiro bit de second_num =", second_num);
cout << endl;
return 0;

Conclusão

O operador bit a bit é usado principalmente para manipular os bits individuais para tipo de dados inteiro e de caractere. O operador bit a bit é muito usado no desenvolvimento de software embarcado. Então, se você estiver desenvolvendo um driver de dispositivo ou um sistema muito próximo ao nível de hardware, você pode querer usar esses operadores bit a bit.

Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...