Gli operatori bitwise di Java

Gli operatori per lavorare sui bit tramite Java sono i seguenti:

& AND bitwise A&B
| OR bitwise A|B
^ XOR bitwise A^B
~ NOT bitwise A~
&= AND bitwise con assegnazione A&=B
|= OR bitwise con assegnazione A|=B
^= XOR bitwise con assegnazione A^=B
>> sposta n bit a destra con estensione A>>n
>>= sposta n bit a destra con estensione e assegna A>>=n
<< sposta bit a sinistra A<<n
<<= sposta bit a sinistra e assegna A<<=n
>>> sposta bit a destra senza segno A>>>n
>>>= sposta bit a destra senza segno e assegna A>>>=n

    Esempi pratici

    Per ciascun esempio ho aggiunto una spiegazione del funzionamento.

    Tutto ciò che ho scritto dopo i simboli // è soltanto un commento, dove ho indicato la conversione binaria del numero decimale.

    Esempio 1 ( AND )

    L'operatore AND bitwise & effettua il prodotto logico dei bit

    int a=60 // = 0011 1100
    int b=13 // = 0000 1101
    c=a&b // = 0000 1100 ossia c=12

    l'operatore AND logico esempio

    Esempio 2 ( OR )

    L'operatore OR bitwise | effettua la somma logica dei bit

    int a=60 // = 0011 1100
    int b=13 // = 0000 1101
    c=a|b // = 0011 1101 ossia c=61

    esempio di OR logico

    Esempio 3 ( XOR )

    L'operatore XOR bitwise ^ effettua la disgiunzione logica esclusiva dei bit

    int a=60 // = 0011 1100
    int b=13 // = 0000 1101
    c=a|b // = 0011 0001 ossia c=49

    un esempio pratico di XOR logico

    Esempio 4 ( NOT )

    L'operatore NOT bitwise ~ esegue la negazione dei bit

    int a=60 // = 0011 1100
    c=~a // = 1100 0011 ossia c=-61

    un esempio di NOT logico

    Esempio 5 ( << )

    L'operatore shift << scorre n bit a sinistra.

    Gli spazi vuoti a destra sono riempiti con degli zeri, mentre quelli che escono a sinistra sono eliminati.

    int a=60 // = 0011 1100
    c=a<<2 // = 1111 0000 ossia c=240

    lo shift a sinistra di 2 posizioni

    Esempio 6 ( >> )

    L'operatore shift >> scorre n bit a destra.

    Gli spazi vuoti a sinistra sono riempiti con degli zeri mentre quelli che escono a destra sono eliminati.

    int a=60 // = 0011 1100
    c=a>>2 // = 0000 1111 ossia c=15

    esempio di shift di 2 posizioni a destra

    Esempio 6 ( >>> ) con segno

    L'operatore shift >>> con segno sposta i bit a destra di n posizioni.

    In questo caso, i bit vuoti sono riempiti con zero (0) se il numero è positivo, oppure con uno (1) se il numero è negativo. Gli altri che escono sono eliminati.

    int a=60 // = 0011 1100
    c=a>>>2 // = 0000 1111 ossia c=15

    un esempio pratico di shift >>> a destra

    Nei numeri positivi il primo bit a sinistra è zero (0) mentre in quelli negativi è uno (1).

    Per questa ragione gli spazi vuoti a sinistra sono riempiti rispettivamente con zero o uno.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Java