Skip to main content

¿Qué son los operadores bit a bit?

En un programa de computadora, los operadores bit a bit son operadores para manipular patrones de bits en expresiones. Bitwise AND, OR, exclusivo OR (XOR), NOT, desplazamiento a la derecha y desplazamiento a la izquierda son operaciones comunes. La mayoría de los lenguajes de programación de computadoras incluyen los seis operadores. A menudo se usan para configurar, borrar o voltear bits individuales en programas que controlan el hardware de la computadora. Los operadores bit a bit también se usan con frecuencia en los algoritmos de cifrado y compresión de datos.

Los operadores bit a bit comunes generalmente se representan simbólicamente en lenguajes de programación como C, C ++ y Java. Se usan en expresiones tal como lo serían los operadores aritméticos como los signos más o menos. El operador bit a bit Y se representa con el ampersand & , OR con la tubería | y XOR con el caret ^ . NOT, también conocido como operador del complemento, se indica con una tilde ~ .

El operador de desplazamiento a la derecha utiliza un doble cursor que apunta a la derecha >> . Por el contrario, el desplazamiento a la izquierda se indica mediante un doble intercalado hacia la izquierda << . Java incluye otra operación de desplazamiento a la derecha, que se muestra con un triple cursor a la derecha >>> .

Los operadores bit a bit aplican una operación lógica a cada par de bits en sus operandos. NO, el desplazamiento a la derecha y el desplazamiento a la izquierda solo tienen un operando verdadero; El segundo valor en las operaciones de turno es el recuento de bits. Para comprender mejor cómo funcionan los operadores bit a bit, un individuo puede visualizar sus operandos como números binarios. Por ejemplo, el operador del complemento voltea cada bit de su operando único al estado opuesto. Un uno se convierte en cero y un cero se convierte en uno. El complemento del valor binario de 8 bits 00110101 es 11001010.

El operador AND tiene dos operandos. Poco a poco, se realiza una operación AND lógica utilizando un bit correspondiente de cada operando. El resultado de cada operación de bit se coloca en esa posición de bit del resultado general. Por ejemplo, el operador AND procesará el bit 7 de un operando con el bit 7 del otro operando. El resultado se almacenará en el bit 7 del resultado general.

En una operación AND, ambos bits de operando deben ser unos para que el resultado sea uno; de lo contrario, el resultado es cero. Por ejemplo, si los valores binarios de 8 bits de los operandos son 00110101 y 11110000, el resultado será 00110000. Un uso común del operador AND es poner a cero bits particulares en el resultado. Esto se hace colocando ceros en esas posiciones de bit en uno de los operandos.

En una operación OR, ambos bits de operando deben ser ceros para que el resultado sea cero; de lo contrario, el resultado es uno. Un uso común del operador OR es establecer ciertos bits del resultado en unos. Esto se hace colocando unos en esas posiciones de bit en uno de los operandos. Para la operación XOR, el resultado es cero si ambos bits de operando son cero o si ambos bits de operando son uno; de lo contrario, el resultado es uno.

El desplazamiento a la izquierda y el desplazamiento a la derecha mueven los bits en el operando hacia la izquierda o hacia la derecha según el número especificado de posiciones de bits. Un desplazamiento lógico a la derecha mueve un cero al bit más a la izquierda como parte del desplazamiento. Un desplazamiento aritmético a la derecha copia el bit más a la izquierda, el bit de signo, antes del desplazamiento a la misma posición después del desplazamiento. El bit original también se desplaza junto con el resto. Cualquier tipo de desplazamiento a la izquierda mueve un cero al bit más a la derecha.

Cuando un operando se desplaza a la derecha, el bit más a la derecha antes del cambio simplemente se descarta. Del mismo modo, se elimina el bit más a la izquierda antes de un desplazamiento a la izquierda. No se envuelve al otro extremo del operando.

Las operaciones de cambio bit a bit dependen del idioma y la implementación. Por ejemplo, en C y C ++, >> y << realizan cambios lógicos si el operando es un entero sin signo. Si el operando es un entero con signo, es probable que se realice un cambio aritmético. En Java, todos los operandos se consideran con signo, y los cambios aritméticos siempre se realizan con >> y << . El operador >>> se usa para un desplazamiento a la derecha lógico, pero aún es posible hacer accidentalmente un desplazamiento a la derecha aritmético sin una mecanografía cuidadosa.

Las complicaciones también pueden surgir cuando los operandos tienen diferentes longitudes de bits o cuando algunos están firmados y otros no. Los operadores bit a bit y las constantes numéricas en el medio de una expresión compleja no pueden evaluarse como se esperaba. Se debe tener cuidado al especificar el tamaño y la naturaleza con signo / sin signo de cada cantidad en la expresión. Esto se puede hacer con una cuidadosa conversión de tipos o asignaciones provisionales a tipos de variables específicos en el código del programa.