Operatore | Descrizione | espressione | Cosa restituisce |
& | and 'bit a bit' | x & y | il valore determinato dall'operazione di and tra i bit di x e y è sufficiente che uno dei due operandi valga 0 per avere come risultato 0 |
| | or 'bit a bit' | x | y | il valore determinato dall'operazione di or tra i bit di x e y se uno dei due bit o entrambi é 1 allora uguale a 1 |
^ | xor 'bit a bit' | x ^ y | il valore determinato dall'operazione di xor tra i bit di x e y ritorna 1 solo se uno degli operandi è 1 e l'altro è 0 |
>> << | shift destro (o sinistro) con segno | x << y | sposta i bit della variabile x verso destra (o sinistra) di y posizioni, preservando il bit di segno lo slittamento a sinistra prevede l'inserimento di bit 0 in coda lo slittamento a destra le cose cambiano perché coinvolge l'ultimo bit che è speciale, in quanto rappresenta il segno |
>>> | shift destro senza segno | x >>> y | sposta i bit della variabile x verso destra di y posizioni senza considerare il bit di segno (vengono aggiunti sempre 0 a sinistra) |
~ | complemento | ~x | inverte tutti i bit della variabile x (gli 0 diventano 1 e viceversa) |
esempio:
int test = 53; // 00110101
System.out.println("Test 1: " + (((test & 1) >0) ? "Sì" : "No")); // 00000001
System.out.println("Test 2: " + (((test & 2) >0) ? "Sì" : "No")); // 00000010
System.out.println("Test 3: " + (((test & 4) >0) ? "Sì" : "No")); // 00000100
System.out.println("Test 4: " + (((test & 8) >0) ? "Sì" : "No")); // 00001000
System.out.println("Test 5: " + (((test & 16) >0) ? "Sì" : "No")); // 00010000
System.out.println("Test 6: " + (((test & 32) >0) ? "Sì" : "No")); // 00100000
System.out.println("Test 7: " + (((test & 64) >0) ? "Sì" : "No")); // 01000000
System.out.println("Test 8: " + (((test & 128) >0) ? "Sì" : "No")); // 10000000
Test 1: Sì
Test 2: No
Test 3: Sì
Test 4: No
Test 5: Sì
Test 6: Sì
Test 7: No
Test 8: No