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