Operadores C ++ Bitwise

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

Breve visão geral dos operadores bitwise

Um operador é um símbolo que instrui o compilador a executar 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 bitwise
  6. Operadores Misc

Todos os operadores bitwise funcionam no nível de bit individual. O operador bitwise só pode ser aplicado aos tipos de dados inteiros e de caracteres. Por exemplo, se você tiver uma variável do tipo inteiro com o tamanho de 32 bits e aplica bit neut sem operação, o operador não será aplicado para todos os 32 bits. Então, eventualmente, todos os 32 bits da variável serão invertidos.

Existem seis operadores diferentes de bit estão disponíveis no C ++:

  1. Bitwise ou [representado como "|"]
  2. Bitwise e [representado como "&"]
  3. Bitwise não [representado como "~"]
  4. Bitwise xor [representado como "^"]
  5. Bitwise esquerda mudança [representada como “<<”]
  6. Mudança direita bitwee [representada como ">>"]

Tabela de verdade ou verdadeira

O Bitwise ou Operator produz 1 quando pelo menos um operando é definido como 1. Aqui está a tabela de verdade para o Bitwise ou Operator:

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

Tabela de verdade e verdadeira

Bitwise e Operator produz 1 quando os dois operandos são definidos como 1. Aqui está a tabela de verdade para o Bitwise e o Operador:

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

Tabela de verdade, não a verdade

Bitwise, não o operador inverte o operando. Aqui está a tabela de verdade para Bitwise, não operador:

Bit-1 ~ Bit-1
0 1
1 0

Tabela de verdade xor bit

O operador Bitwise XOR produz 1 se, e somente se, um dos operando estiver definido como 1. Aqui está a tabela de verdade para Bitwise e Operator:

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

Operador de turno esquerdo bit No entanto

O operador de turno à esquerda bit shift muda todos os bits deixados pelo número especificado de bits especificados. Se você deixou o turno todos os bits dos dados por 1, os dados originais serão multiplicados por 2. Da mesma forma, se você deixou o turno de todos os bits dos dados por 2, os dados originais serão multiplicados por 4.

Operador de mudança direita bittual

O operador de mudança direto bit -bit muda todos os bits diretamente pelo número especificado de bits especificados. Se você mudar de maneira certa todos os bits dos dados por 1, os dados originais serão divididos (divisão inteira) por 2. Da mesma forma, se você mudar o certo todos os bits dos dados por 2, os dados originais serão divididos (divisão inteira) por 4.

Exemplos

Agora, como entendemos o conceito básico de operações bit -bitwise, vejamos alguns exemplos, o que o ajudará a entender as operações bitwise no C ++:

  • Exemplo 1: Bitwise ou operador
  • Exemplo 2: Bitwise e Operator
  • Exemplo 3: Bitwise Not Operator
  • Exemplo-4: Operador Bitwise XOR
  • Exemplo 5: Operador de turno esquerdo bit No entanto
  • Exemplo-6: Operador de mudança direita bit-sticue
  • Exemplo 7: Bit definido
  • Exemplo 8: Bit claro

O Exemplo 7 e 8 são para demonstrar o uso do mundo real de operadores bitwise na linguagem de programação C ++.

Exemplo 1: Bitwise ou operador

Neste programa de exemplo, demonstraremos o bitwise ou o operador.

#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;
// bitwise ou operação
resultado = primeiro_num | segundo_num;
// Imprima os números de entrada
cout << endl;
display ("primeiro número é =", primeiro_num);
display ("segundo número é =", segundo_num);
// Imprima o valor de saída
display ("primeiro_num | Second_num =", resultado);
cout << endl;
retornar 0;

Exemplo 2: Bitwise e Operator

Neste programa de exemplo, iremos ilustrar bit -newe e operador.

#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;
// bitwise e operação
resultado = primeiro_num & segundo_num;
// Imprima os números de entrada
cout << endl;
display ("primeiro número é =", primeiro_num);
splay ("segundo número é =", segundo_num);
// Imprima o valor de saída
display ("First_num & Second_num =", resultado);
cout << endl;
retornar 0;

Exemplo 3: Bitwise Not Operator

Neste programa de exemplo, entenderemos como o operador não bitwise não 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;
// bitwise não operação
resultado_1 = ~ primeiro_num;
resultado_2 = ~ Second_num;
// Imprima os números de entrada e o valor de saída
cout << endl;
display ("primeiro número é =", primeiro_num);
display ("~ primeiro_num =", resultado_1);
cout << endl;
// Imprima os números de entrada e o valor de saída
display ("segundo número é =", segundo_num);
display ("~ Second_num =", resultado_2);
cout << endl;
retornar 0;

Exemplo-4: Operador Bitwise XOR

Este programa pretende explicar como o operador XOR bitwise 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 Bitwise XOR
resultado = primeiro_num ^ segundo_num;
// Imprima os números de entrada
cout << endl;
display ("primeiro número é =", primeiro_num);
display ("segundo número é =", segundo_num);
// Imprima o valor de saída
display ("primeiro_num ^ second_num =", resultado);
cout << endl;
retornar 0;

Exemplo 5: Operador de turno esquerdo bit No entanto

Agora, veremos o exemplo do operador de mudança de esquerda bit Neve. Neste programa, declaramos dois números, First_num e Second_num do tipo inteiro. Aqui, o "First_num" é deslocado para a esquerda um pouco, e o "Second_num" é deslocado por 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 turno à esquerda bit No entanto
Result_1 = First_num << 1;
resultado_2 = segundo_num << 2;
// Imprima os números de entrada e o valor de saída
cout << endl;
display ("primeiro número é =", primeiro_num);
display ("First_num << 1 = ", result_1);
cout << endl;
// Imprima os números de entrada e o valor de saída
display ("segundo número é =", segundo_num);
display ("Second_num << 2 = ", result_2);
cout << endl;
retornar 0;

Exemplo-6: Operador de mudança direita bit-sticue

Agora, veremos outro exemplo para entender o operador de turno certo bit -short certo. Declaramos dois números, First_num e Second_num do tipo inteiro. Aqui, o "First_num" é deslocado para a direita um pouco, e o "Second_num" é deslocado para a direita por 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 mudança direita bittual
resultado_1 = primeiro_num >> 1;
resultado_2 = segundo_num >> 2;
// Imprima os números de entrada e o valor de saída
cout << endl;
display ("primeiro número é =", primeiro_num);
display ("primeiro_num >> 1 =", resultado_1);
cout << endl;
// Imprima os números de entrada e o valor de saída
display ("segundo número é =", segundo_num);
display ("Second_num >> 2 =", resultado_2);
cout << endl;
retornar 0;

Exemplo 7: Bit definido

Este exemplo pretende mostrar como definir um bit em particular usando operadores bitwise.

#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;
// Imprima o número de entrada - First_Num
cout << endl;
display ("primeiro número é =", primeiro_num);
// Defina o 5º bit
primeiro_num | = (1ul << 5);
// Saída de impressão
display ("Defina o 5º bit de First_num =", First_Num);
cout << endl;
// Imprima o número de entrada - Second_num
cout << endl;
display ("segundo número é =", segundo_num);
// Defina o 6º bit
Second_num | = (1ul << 6);
// Saída de impressão
display ("Defina o 6º bit de segundo_num =", segundo_num);
cout << endl;
retornar 0;

Exemplo 8: Bit claro

Este exemplo pretende mostrar como limpar uma parte específica usando operadores bitwise.

#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;
// Imprima o número de entrada - First_Num
cout << endl;
display ("primeiro número é =", primeiro_num);
// Limpar 2º bit
primeiro_num & = ~ (1ul << 2);
// Saída de impressão
display ("Defina 2º bit de First_num =", First_Num);
cout << endl;
// Imprima o número de entrada - Second_num
cout << endl;
display ("segundo número é =", segundo_num);
// Limpar o 3º bit
Second_num & = ~ (1ul << 3);
// Saída de impressão
display ("Defina o terceiro bit de segundo_num =", segundo_num);
cout << endl;
retornar 0;

Conclusão

O operador bitwise é usado principalmente para manipular os bits individuais para o tipo inteiro e o tipo de dados de caracteres. O operador bitwise é fortemente usado no desenvolvimento de software incorporado. Portanto, se você estiver desenvolvendo um driver de dispositivo ou um sistema muito próximo ao nível de hardware, convém usar esses operadores bit newise.