1. &Operatore bit a bit

Abbiamo detto in precedenza che tutti i dati sono archiviati in memoria in una rappresentazione binaria. Quindi, molto tempo fa, i programmatori hanno escogitato molti modi interessanti per lavorare con i numeri binari. Ad esempio, Java ha operatori logici che operano sui bit della rappresentazione binaria di un numero: &(AND), | (OR), ~(NOT o complemento) e ^(XOR - or esclusivo).

a & b
Operatore bit per bit &(AND).

Questo operatore è molto simile all'operatore logico &(AND), solo che è denotato da una singola e commerciale, non due:

Ed è applicato a singoli bit. Ciascun operando viene trattato come un array di bit e il ibit esimo del risultato viene calcolato utilizzando il ibit esimo di ciascuno dei due operandi.

Il primo bit del risultato verrà calcolato in base al primo bit del numero a e al primo bit del numero b, il secondo bit — in base al secondo bit del numero a e al secondo bit del numero b, ecc.

L' &operatore (AND) significa "il bit risultante è uguale a uno solo se il bit corrispondente del numero aè uguale a uno ANDil bit corrispondente del numero bè uguale a uno":

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

Esempi:

Esempio Risultato
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. |Operatore bit a bit

Questo operatore è molto simile all'operatore logico |(OR), solo che è indicato da una singola linea verticale, non due:

a | b

Ed è applicato a singoli bit. Ogni operando viene trattato come un array di bit e l'i-esimo bit del risultato viene calcolato utilizzando l'i-esimo bit di ciascuno dei due operandi.

L' |operatore bit per bit (OR) significa "il bit risultante è uguale a uno se il bit corrispondente del numero aè uguale a uno ORil bit corrispondente del numero bè uguale a uno":

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

Esempi:

Esempio Risultato
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Solo quando i bit corrispondenti (i bit nella stessa posizione) di entrambi i numeri sono zero, il bit corrispondente del risultato è uguale a zero.



3. Operatore bitwise ^(XOR o "esclusivo o").

L' XORoperatore, pronunciato anche esclusivo o , è denotato dal ^simbolo. Per inserirlo sulla tastiera, premi Maiusc + 6 (su un layout di tastiera inglese).

a ^ b

Questo operatore è in qualche modo simile all'operatore OR, anche in quanto ha un nome simile:XOR

L' ^operatore bit per bit (XOR) significa "il bit risultante è uguale a uno se il bit corrispondente del numero aè uguale a uno ORil bit corrispondente del numero bè uguale a uno ma non entrambi contemporaneamente":

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

Esempi:

Esempio Risultato
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Solo quando i bit corrispondenti (i bit nella stessa posizione) di entrambi i numeri sono diversi , il bit corrispondente del risultato è uguale a uno . Se i bit sono uguali , il bit risultante è uguale a zero .



4. ~Operatore bit per bit (NOT, COMPLEMENT).

Penso che tu possa già indovinare cosa fa. Questo operatore è molto simile all'operatore logico !(NOT), ma è indicato da una tilde , non da un punto esclamativo:

~a

Questo è un operatore unario , il che significa che si applica a un singolo numero, non a due. Appare prima di questo singolo operando.

L' ~operatore bit per bit significa "il bit risultante è uno se il bit corrispondente del numero aè zero, ed è zero se il bit corrispondente del numero aè uno":

~1 = 0
~0 = 1

Esempi:

Esempio Risultato
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Questo operatore cambia semplicemente il bit che è 1to 0e il bit che è 0to 1.