Operadores de bit a c ++

Operadores de bit a c ++
En este artículo, vamos a discutir a los operadores bit a bit en el lenguaje de programación de C ++. Veremos varios ejemplos de trabajo para comprender las operaciones bit a detalle en detalle. En C ++, los operadores bit a bit trabajan en el nivel de bits individual.

Breve descripción de los operadores bitwise

Un operador es un símbolo que le indica al compilador que realice ciertas operaciones matemáticas o lógicas. Hay varios tipos de operadores en C ++, como:

  1. Operadores aritméticos
  2. Operadores logicos
  3. Operadores relacionales
  4. Operadores de Asignación
  5. Operadores de bit a bit
  6. Operadores Miscoderadores

Todos los operadores bit a bit trabajan en el nivel de bits individual. El operador bitwise solo se puede aplicar a los tipos de datos enteros y de caracteres. Por ejemplo, si tiene una variable de tipo entero con el tamaño de 32 bits y aplica bit a bit no operador, el operador bit a bit se aplicará para los 32 bits. Entonces, eventualmente, todos los 32 bits en la variable se incorporarán.

Hay seis operadores diferentes disponibles en C ++:

  1. Bitwise o [representado como "|"]
  2. Bitwise y [representado como "&"]
  3. Bit a bit no [representado como "~"]
  4. Bitwise xor [representado como "^"]
  5. Bitwise Left Shift [representado como "<<”]
  6. Bitwise Right Shift [representado como ">>"]

Mesa bit a bit o de la verdad

El bitwise u operador produce 1 cuando al menos un operando se establece en 1. Aquí está la tabla de verdad para el bitwise u operador:

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

Mesa bit a bit y verdad

Bitwise y el operador produce 1 cuando ambos operandos están configurados en 1. Aquí está la tabla de verdad para el bit a bit y el operador:

Bit-1 Bit-2 Bit-1 y bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Mesa de verdad no de la verdad

Bit a bitwise no operador invertir el operando. Aquí está la tabla de verdad para bitwise no operador:

Bit-1 ~ Bit-1
0 1
1 0

Mesa de verdad xor bitwise

El operador XOR bitwise produce 1 si, y solo si, uno de los operandos se establece en 1. Aquí está la tabla de verdad para bitwise y operador:

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

Operador de cambio de izquierda a bit a bits

El operador de desplazamiento izquierdo bit a bits cambia todos los bits dejados por el número especificado de bits especificados. Si dejó el cambio todos los bits de los datos por 1, los datos originales se multiplicarán por 2. Del mismo modo, si dejó el cambio todos los bits de los datos por 2, los datos originales se multiplicarán por 4.

Operador de desplazamiento derecho a bit a bit

El operador de desplazamiento derecho bitwise cambia todos los bits correctamente mediante el número especificado de bits especificados. Si cambia correctamente todos los bits de los datos por 1, los datos originales se dividirán (división entera) por 2. Del mismo modo, si está correctamente, cambia todos los bits de los datos por 2, los datos originales se dividirán (división entera) por 4.

Ejemplos

Ahora, dado que hemos entendido el concepto básico de las operaciones bit a bit, veamos un par de ejemplos, lo que lo ayudará a comprender las operaciones bit a C ++:

  • Ejemplo-1: bitwise u operador
  • Ejemplo-2: bitwise y operador
  • Ejemplo-3: bit a bit no operador
  • Ejemplo-4: operador de XOR bitwise
  • Ejemplo-5: Operador de cambio de izquierda a bitwise
  • Ejemplo-6: Operador de cambio de derecha bitwise
  • Ejemplo-7: Establecer bit
  • Ejemplo-8: Borde bit

Los Ejemplos 7 y 8 son para demostrar el uso del mundo real de los operadores bit a bit en el lenguaje de programación C ++.

Ejemplo-1: bitwise u operador

En este programa de ejemplo, demostraremos el bitwise u operador.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, segundo_num = 9, resultado = 0;
// Operación bit a bits
resultado = Primero_num | segundo_num;
// imprime los números de entrada
cout << endl;
display ("primer número es =", first_num);
display ("segundo número es =", segundo_num);
// Imprimir el valor de salida
display ("First_num | Second_num =", resultado);
cout << endl;
regresar 0;

Ejemplo-2: bitwise y operador

En este programa de ejemplo, ilustraremos bitwise y operador.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, segundo_num = 9, resultado = 0;
// Operación bitwise
resultado = first_num & Second_num;
// imprime los números de entrada
cout << endl;
display ("primer número es =", first_num);
splay ("segundo número es =", segundo_num);
// Imprimir el valor de salida
display ("First_num & Second_num =", resultado);
cout << endl;
regresar 0;

Ejemplo-3: bit a bit no operador

En este programa de ejemplo, entenderemos cómo funciona el operador bit a b en c++.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, Second_num = 9, result_1 = 0, result_2 = 0;
// bit a bit no operación
result_1 = ~ first_num;
result_2 = ~ Second_num;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("primer número es =", first_num);
display ("~ first_num =", resultado_1);
cout << endl;
// imprime los números de entrada y el valor de salida
display ("segundo número es =", segundo_num);
display ("~ segundo_num =", resultado_2);
cout << endl;
regresar 0;

Ejemplo-4: operador de XOR bitwise

Este programa tiene la intención de explicar cómo funciona el operador XOR bitwise en c++.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, segundo_num = 9, resultado = 0;
// operación XOR bitwise
resultado = first_num ^ Second_num;
// imprime los números de entrada
cout << endl;
display ("primer número es =", first_num);
display ("segundo número es =", segundo_num);
// Imprimir el valor de salida
display ("First_num ^ Second_num =", resultado);
cout << endl;
regresar 0;

Ejemplo-5: Operador de cambio de izquierda a bitwise

Ahora, veremos el ejemplo del operador de cambio de izquierda bitwise. En este programa, hemos declarado dos números, First_num y Second_num of Integer Type. Aquí, el "First_num" se ve cambiado a la izquierda por un bit, y el "Second_num" se ve desplazado por dos bits.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, Second_num = 9, result_1 = 0, result_2 = 0;
// Operación de cambio de izquierda bit a bits
resultado_1 = first_num << 1;
resultado_2 = segundo_num << 2;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("primer número es =", first_num);
Display ("First_num << 1 = ", result_1);
cout << endl;
// imprime los números de entrada y el valor de salida
display ("segundo número es =", segundo_num);
Display ("Second_num << 2 = ", result_2);
cout << endl;
regresar 0;

Ejemplo-6: Operador de cambio de derecha bitwise

Ahora, veremos otro ejemplo para comprender el operador de cambio derecho. Hemos declarado dos números, First_num y Second_num de tipo entero. Aquí, el "First_num" se siente a la derecha por un bit, y el "Second_num" está cambiado a la derecha por dos bits.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int primero_num = 7, Second_num = 9, result_1 = 0, result_2 = 0;
// Operación de cambio derecho de bit a bits
result_1 = first_num >> 1;
resultado_2 = segundo_num >> 2;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("primer número es =", first_num);
display ("First_num >> 1 =", resultado_1);
cout << endl;
// imprime los números de entrada y el valor de salida
display ("segundo número es =", segundo_num);
display ("Second_num >> 2 =", resultado_2);
cout << endl;
regresar 0;

Ejemplo-7: Establecer bit

Este ejemplo tiene la intención de mostrar cómo establecer un bit particular utilizando operadores bitwise.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int first_num = 7, Second_num = 9;
// imprime el número de entrada - First_num
cout << endl;
display ("primer número es =", first_num);
// establecer quinto bit
First_num | = (1ul << 5);
// Salida de impresión
display ("establecer el quinto bit de first_num =", first_num);
cout << endl;
// Imprima el número de entrada - Second_num
cout << endl;
display ("segundo número es =", segundo_num);
// establecer el sexto bit
Second_num | = (1ul << 6);
// Salida de impresión
display ("establecer sexto bit de segundo_num =", segundo_num);
cout << endl;
regresar 0;

Ejemplo-8: Borde bit

Este ejemplo tiene la intención de mostrar cómo borrar un bit particular utilizando operadores bitwise.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
// Función Display ()
visualización void (string print_msg, int número)

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

int main ()

int first_num = 7, Second_num = 9;
// imprime el número de entrada - First_num
cout << endl;
display ("primer número es =", first_num);
// borrar 2do bit
First_num & = ~ (1ul << 2);
// Salida de impresión
display ("establecer 2do bit de first_num =", first_num);
cout << endl;
// Imprima el número de entrada - Second_num
cout << endl;
display ("segundo número es =", segundo_num);
// borrar 3rd bit
Second_num & = ~ (1ul << 3);
// Salida de impresión
display ("establecer el 3er bit de segundo_num =", segundo_num);
cout << endl;
regresar 0;

Conclusión

El operador bitwise se usa principalmente para manipular los bits individuales para el tipo de datos enteros y de caracteres. El operador bitwise se usa muy en el desarrollo de software integrado. Entonces, si está desarrollando un controlador de dispositivo o un sistema muy cerca del nivel de hardware, es posible que desee usar estos operadores bit a bit a bit a.