2010-12-26 9 views

Respuesta

13
<<, >> 

Bit shift izquierda y derecha, respectivamente. Si imagina el operando izquierdo como una secuencia binaria de bits, usted es cambiando a la izquierda o derecha por el número de bits indicado por el operando derecho.

&, ^, | 

Estos se BitWise y, xor, y o, respectivamente. Puede pensar en & y | como las contrapartidas de && y ||, excepto que tratarán sus operandos como vectores de bits y realizarán las operaciones lógicas en cada uno de los bits. No hay operador ^^, pero esta operación es "xor" o "exclusive or". Puede pensar en "a xor b" como "a o b, pero no ambos".

+0

Para completar, además de los operadores de turno, estas cosas también funcionan con booleanos (donde pueden o no ser en modo bit; están en Visual Basic, pero no (por especificación) en Java, AFAIK.) '&' y '|' son diferentes de '&&' y '||' en que ambos operandos siempre se evalúan, mientras que en el '&&'/'||' versiones, el segundo operando no se evalúa si no puede cambiar el valor de la expresión af ter el primer operando fue evaluado. –

2

Aquí hay un intento de simplificar las cosas para los principiantes.

Requisitos previos

usted tiene que estar familiarizado con el sistema numérico binario (números hechos de dos dígitos). Si no es así, primero consulte este enlace: https://www.mathsisfun.com/binary-number-system.html. En caso de que se rompa el enlace anterior, esta respuesta puede ayudar un poco: https://stackoverflow.com/a/32155850/1636522.

De hecho, para averiguar cómo funcionan estos operadores, necesita saber qué secuencia de bits está detrás de los números involucrados en la operación. Después de eso, deberías ser capaz de entender las siguientes cosas.

recordatorio

dígitos decimales y sus notaciones binarios:

0 0 | 5 101 
1 1 | 6 110 
2 10 | 7 111 
3 11 | 8 1000 
4 100 | 9 1001 

¿Qué >>>, >> y << hacer?

Estos operadores cambian una secuencia de bits hacia la izquierda o hacia la derecha.

decimal | binary  decimal | binary 
---------|--------- ---------|--------- 
     9 | 1001   2 |  10 
    >> 2 | >> 2  << 2 | << 2 
    = 2 | = 10   = 8 | = 1000 

¿Qué &, | y ^ hacer?

Estos operadores combinan los bits de dos números para crear un nuevo número.

decimal | binary  decimal | binary  decimal | binary 
---------|-------- ---------|-------- ---------|-------- 
     5 | 101   5 | 101   5 | 101 
    & 6 | & 110   | 6 | | 110  ^6 |^110 
    = 4 | = 100   = 7 | = 111   = 3 | = 011 

¿Cómo & trabajo?

Para cada par de bits: si al menos uno de los dos bits es 0, el bit resultante es 0. Si ninguno de los dos bits es 0, el bit resultante es 1.

101 bit 3 | bit 2 | bit 1 
& 110 -------|-------|------- 
= 100  1 | 0 | 1 
      & | & | & 
      1 | 1 | 0 
      = | = | = 
      1 | 0 | 0 

¿Cómo funciona |?

Para cada par de bits: si al menos uno de los dos bits es 1, el bit resultante es 1. Si ninguno de los dos bits es 1, el bit resultante es 0.

101 bit 3 | bit 2 | bit 1 
| 110 -------|-------|------- 
= 111  1 | 0 | 1 
      | | | | | 
      1 | 1 | 0 
      = | = | = 
      1 | 1 | 1 

¿Cómo funciona ^?

Para cada par de bits: si los dos bits son diferentes, el bit resultante es 1. Si los dos bits son los mismos, el bit resultante es 0.

101 bit 3 | bit 2 | bit 1 
^ 110 -------|-------|------- 
= 011  1 | 0 | 1 
     ^ | ^ | ^
      1 | 1 | 0 
      = | = | = 
      0 | 1 | 1 
Cuestiones relacionadas