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:
- Operadores aritméticos
- Operadores logicos
- Operadores relacionales
- Operadores de Asignación
- Operadores bit a bit
- 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 ++:
- O bit a bit [representado como "|"]
- AND bit a bit [representado como "&"]
- NOT bit a bit [representado como "~"]
- XOR bit a bit [representado como "^"]
- Desplazamiento a la izquierda bit a bit [representado como "<<”]
- 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 ++:
- Ejemplo 1: operador OR bit a bit
- Ejemplo 2: operador AND bit a bit
- Ejemplo-3: Operador NOT bit a bit
- Ejemplo 4: operador XOR bit a bit
- Ejemplo-5: Operador de desplazamiento a la izquierda bit a bit
- Ejemplo-6: Operador de desplazamiento a la derecha bit a bit
- Ejemplo-7: Establecer bit
- Ejemplo 8: Bit de limpieza
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.