1. &Operador bit a bit

Anteriormente dijimos que todos los datos se almacenan en la memoria en una representación binaria. Entonces, hace mucho tiempo, los programadores idearon muchas formas interesantes de trabajar con números binarios. Por ejemplo, Java tiene operadores lógicos que operan en los bits de la representación binaria de un número: &(AND) | (OR), ~(NOT o complemento) y ^(XOR - exclusivo o).

a & b
Operador bit a bit &(AND)

Este operador es muy similar al &operador lógico (AND), solo que se denota con un solo ampersand, no con dos:

Y se aplica a bits individuales. Cada operando se trata como una matriz de bits, y el ienésimo bit del resultado se calcula utilizando el ienésimo bit de cada uno de los dos operandos.

El primer bit del resultado se calculará en función del primer bit del número a y el primer bit del número b, el segundo bit, en función del segundo bit del número a y el segundo bit del número b, etc.

El &operador (AND) significa que "el bit resultante es igual a uno solo si el bit correspondiente del número aes igual a uno, ANDel bit correspondiente del número bes igual a uno":

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Ejemplos:

Ejemplo Resultado
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. |Operador bit a bit

Este operador es muy similar al |operador lógico (OR), solo que se denota con una sola línea vertical, no con dos:

a | b

Y se aplica a bits individuales. Cada operando se trata como una matriz de bits, y el i-ésimo bit del resultado se calcula utilizando el i-ésimo bit de cada uno de los dos operandos.

El |operador bit a bit (OR) significa que "el bit resultante es igual a uno si el bit correspondiente del número aes igual a uno ORel bit correspondiente del número bes igual a uno":

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Ejemplos:

Ejemplo Resultado
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Solo cuando los bits correspondientes (los bits en la misma posición) de ambos números son cero, el bit correspondiente del resultado es igual a cero.



3. ^Operador bit a bit (XOR o "o exclusivo")

El XORoperador, también pronunciado exclusivo o , se denota con el ^símbolo. Para ingresarlo en el teclado, presione shift + 6 (en un diseño de teclado en inglés).

a ^ b

Este operador es algo similar al ORoperador, incluso porque tiene un nombre similar:XOR

El ^operador bit a bit (XOR) significa que "el bit resultante es igual a uno si el bit correspondiente del número aes igual a uno ORel bit correspondiente del número bes igual a uno pero no ambos al mismo tiempo":

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Ejemplos:

Ejemplo Resultado
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Solo cuando los bits correspondientes (los bits en la misma posición) de ambos números son diferentes , el bit correspondiente del resultado es igual a uno . Si los bits son iguales , el bit resultante es igual a cero .



4. ~Operador bit a bit (NO, COMPLEMENTO)

Creo que ya puedes adivinar lo que hace. Este operador es muy similar al !operador lógico (NOT), pero se denota con una tilde , no con un signo de exclamación:

~a

Este es un operador unario , lo que significa que se aplica a un solo número, no a dos. Aparece antes de este único operando.

El ~operador bit a bit significa "el bit resultante es uno si el bit correspondiente del número aes cero, y es cero si el bit correspondiente del número aes uno":

~1 = 0
~0 = 1

Ejemplos:

Ejemplo Resultado
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Este operador simplemente cambia el bit que es 1a 0y los bits que son 0a 1.