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:
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 ++:
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 ++:
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.