C ++

Operadores bit a bit de C ++

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

Breve descripción general de los operadores bit a bit

Un operador es un símbolo que 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 bit a bit
  6. Operadores varios

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

Hay seis operadores bit a bit disponibles en C ++:

  1. O bit a bit [representado como "|"]
  2. AND bit a bit [representado como "&"]
  3. NOT bit a bit [representado como "~"]
  4. XOR bit a bit [representado como "^"]
  5. Desplazamiento a la izquierda bit a bit [representado como "<<”]
  6. Desplazamiento a la derecha bit a bit [representado como ">>"]

Tabla de verdad o bit a bit

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

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

Tabla de verdad y bit a bit

El operador AND bit a bit produce 1 cuando ambos operandos se establecen en 1. Aquí está la tabla de verdad para el operador AND Bitwise:

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

Tabla de NO verdad bit a bit

El operador NOT bit a bit invierte el operando. Aquí está la tabla de verdad para el operador NOT Bitwise:

Bit-1 ~ Bit-1
0 1
1 0

Tabla de verdad de XOR bit a bit

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

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

Operador de desplazamiento a la izquierda bit a bit

El operador Bitwise Left Shift desplaza todos los bits a la izquierda por el número especificado de bits especificados. Si dejó desplazar todos los bits de los datos por 1, los datos originales se multiplicarán por 2. De manera similar, si dejó desplazar todos los bits de los datos por 2, los datos originales se multiplicarán por 4.

Operador de desplazamiento a la derecha bit a bit

El operador Bitwise Right Shift desplaza todos los bits a la derecha en el número especificado de bits especificados. Si desplaza a la derecha todos los bits de los datos en 1, los datos originales se dividirán (división entera) por 2. De manera similar, si desplaza a la derecha todos los bits de los datos por 2, los datos originales se dividirán (división entera) por 4.

Ejemplos de

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

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

Ejemplo 1: operador OR bit a bit

En este programa de ejemplo, demostraremos el operador OR Bitwise.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result = 0;
// Operación OR bit a bit
resultado = primer_num | segundo_num;
// imprime los números de entrada
cout << endl;
display ("El primer número es =", first_num);
display ("El segundo número es =", second_num);
// imprime el valor de salida
display ("first_num | second_num =", resultado);
cout << endl;
return 0;

Ejemplo 2: operador AND bit a bit

En este programa de ejemplo, ilustraremos el operador AND Bitwise.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result = 0;
// Operación AND bit a bit
result = first_num & second_num;
// imprime los números de entrada
cout << endl;
display ("El primer número es =", first_num);
splay ("El segundo número es =", second_num);
// imprime el valor de salida
display ("first_num & second_num =", resultado);
cout << endl;
return 0;

Ejemplo-3: Operador NOT bit a bit

En este programa de ejemplo, entenderemos cómo funciona el operador NOT Bitwise en C++.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result_1 = 0, result_2 = 0;
// Operación NOT bit a bit
result_1 = ~ first_num;
result_2 = ~ second_num;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("El primer número es =", first_num);
display ("~ first_num =", result_1);
cout << endl;
// imprime los números de entrada y el valor de salida
display ("El segundo número es =", second_num);
display ("~ second_num =", result_2);
cout << endl;
return 0;

Ejemplo 4: operador XOR bit a bit

Este programa pretende explicar cómo funciona el operador Bitwise XOR en C++.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result = 0;
// Operación XOR bit a bit
resultado = primer_num ^ segundo_num;
// imprime los números de entrada
cout << endl;
display ("El primer número es =", first_num);
display ("El segundo número es =", second_num);
// imprime el valor de salida
display ("first_num ^ second_num =", resultado);
cout << endl;
return 0;

Ejemplo-5: Operador de desplazamiento a la izquierda bit a bit

Ahora, veremos el ejemplo del operador Bitwise Left Shift. En este programa, hemos declarado dos números, first_num y second_num de tipo entero. Aquí, el "first_num" se desplaza a la izquierda un bit y el "second_num" se desplaza a la izquierda dos bits.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result_1 = 0, result_2 = 0;
// Operación Bitwise Left Shift
result_1 = first_num << 1;
result_2 = second_num << 2;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("El 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 ("El segundo número es =", second_num);
display ("second_num << 2    =  ", result_2);
cout << endl;
return 0;

Ejemplo 6: Operador de desplazamiento a la derecha bit a bit

Ahora, veremos otro ejemplo para entender el operador Bitwise Right Shift. Hemos declarado dos números, first_num y second_num de tipo entero. Aquí, el "first_num" se desplaza a la derecha un bit y el "second_num" se desplaza a la derecha dos bits.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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, result_1 = 0, result_2 = 0;
// Operación de desplazamiento a la derecha bit a bit
result_1 = first_num >> 1;
resultado_2 = segundo_num >> 2;
// imprime los números de entrada y el valor de salida
cout << endl;
display ("El 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 ("El segundo número es =", second_num);
display ("second_num >> 2 =", result_2);
cout << endl;
return 0;

Ejemplo-7: Establecer bit

Este ejemplo pretende mostrar cómo establecer un bit en particular utilizando operadores bit a bit.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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 ("El primer número es =", first_num);
// Establecer el quinto bit
first_num | = (1UL << 5);
// Salida de impresión
display ("Establecer el quinto bit de first_num =", first_num);
cout << endl;
// imprime el número de entrada - second_num
cout << endl;
display ("Second Number is =", second_num); // Establecer el sexto bit
segundo_num | = (1UL << 6);
// Salida de impresión
display ("Establecer el sexto bit de second_num =", second_num);
cout << endl;
return 0;

Ejemplo 8: Bit de limpieza

Este ejemplo pretende mostrar cómo borrar un bit en particular utilizando operadores bit a bit.

#incluir
#incluir
#incluir
usando el espacio de nombres std;
// función display ()
visualización vacía (cadena print_msg, número int)

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 ("El primer número es =", first_num);
// Borrar el segundo bit
first_num & = ~ (1UL << 2);
// Salida de impresión
display ("Establecer el segundo bit de first_num =", first_num);
cout << endl;
// imprime el número de entrada - second_num
cout << endl;
display ("El segundo número es =", second_num);
// Borrar el tercer bit
segundo_num & = ~ (1UL << 3);
// Salida de impresión
display ("Establecer el tercer bit de second_num =", second_num);
cout << endl;
return 0;

Conclusión

El operador bit a bit se usa principalmente para manipular los bits individuales para el tipo de datos de caracteres y enteros. El operador bit a bit se utiliza mucho en el desarrollo de software integrado. Por lo tanto, si está desarrollando un controlador de dispositivo o un sistema muy cercano al nivel de hardware, es posible que desee utilizar estos operadores bit a bit.

WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...