2012-07-07 30 views

Respuesta

6

El primer signo del operador: amplía el valor, cambiando en una copia del bit de signo; el segundo siempre cambia en un cero.

La razón para esto es emular enteros sin signo con el fin de realizar operaciones de bits, compensando parcialmente la falta de tipos integrales sin signo en Java.

11

>> es aritmética (firmado) a la derecha, >>> es lógico (sin signo) a la derecha, como se describe en el Java tutorial. Pruébalos con un valor negativo, y verás una diferencia.

3

This explains it really well. En esa misma página también hay un breve example.

Pero para un verdadero breve resumen:

<< signed left shift - shifts a bit pattern to the left 
    0 0 1 1 1 => 0 1 1 1 0 

>> signed right shift - shifts a bit pattern to the right 
    0 0 1 1 1 => 0 0 0 1 1 

>>> unsigned right shift - shifts a zero into the leftmost position 
    1 1 1 0 => 0 0 1 1 

~ unary bitwise complement operator 
    A | Result 
    0 | 1 
    1 | 0 
    0 | 1 
    1 | 0 

& bitwise and 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 0 
    0 | 1 | 0 
    1 | 1 | 1 

^ xor 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 1 
    0 | 1 | 1 
    1 | 1 | 0 

| inclusive or 
    A | B | Result 
    0 | 0 | 0 
    1 | 0 | 1 
    0 | 1 | 1 
    1 | 1 | 1 
Cuestiones relacionadas