x <<= y (x = x << y)
x >>= y (x = x >> y)
x >>>= y (x = x >>> y)
x &= y (x = x & y)
x ^= y (x = x^y)
x |= y (x = x | y)
Cosa significano questi diversi operatori fanno?Cosa fanno questi operatori bit a bit JavaScript?
x <<= y (x = x << y)
x >>= y (x = x >> y)
x >>>= y (x = x >>> y)
x &= y (x = x & y)
x ^= y (x = x^y)
x |= y (x = x | y)
Cosa significano questi diversi operatori fanno?Cosa fanno questi operatori bit a bit JavaScript?
<<, >>
Bit shift a sinistra ea destra, rispettivamente. Se si immagina l'operando di sinistra come una sequenza binaria di bit, si è spostando quelli a sinistra oa destra del numero di bit indicati dall'operando di destra.
&, ^, |
presentate OR bit e, xor e o, rispettivamente. Puoi pensare a &
e |
come le controparti di &&
e ||
, tranne per il fatto che tratteranno i loro operandi come vettori di bit ed eseguiranno le operazioni logiche su ciascuno dei bit. Non esiste l'operatore ^^
, ma questa operazione è "xor" o "exclusive or". Puoi pensare a "a xor b" come "a o b, ma non entrambi".
Solo per completezza, a parte gli operatori di turno, queste cose funzionano anche con i booleani (dove potrebbero essere o meno bit a bit - essi sono in Visual Basic, ma non (in base alle specifiche) in Java, AFAIK.) '&' e '|' sono quindi diversi da '&&' e '||' in quanto entrambi gli operandi vengono sempre valutati, mentre in '&&'/'||' versioni, il secondo operando non viene valutato se non può modificare il valore dell'espressione af il primo operando è stato valutato. –
Ecco un tentativo di rendere le cose semplici per i principianti.
Prerequisiti
dovete avere familiarità con il sistema numerico binario (numeri fatti da due cifre). In caso contrario, controllare prima questo collegamento: https://www.mathsisfun.com/binary-number-system.html. Nel caso in cui il collegamento precedente si interrompa, questa risposta può aiutare un po ': https://stackoverflow.com/a/32155850/1636522.
Infatti, per capire come funzionano questi operatori, è necessario sapere quale sequenza di bit è dietro ai numeri coinvolti nell'operazione. Dopodiché dovresti essere in grado di capire i seguenti elementi.
promemoria
cifre decimali e le loro notazioni binarie:
0 0 | 5 101
1 1 | 6 110
2 10 | 7 111
3 11 | 8 1000
4 100 | 9 1001
Cosa >>>
, >>
e <<
fare?
Questi operatori spostano una sequenza di bit verso sinistra o verso destra.
decimal | binary decimal | binary
---------|--------- ---------|---------
9 | 1001 2 | 10
>> 2 | >> 2 << 2 | << 2
= 2 | = 10 = 8 | = 1000
Cosa &
, |
e ^
fare?
Questi operatori combinano i bit di due numeri per creare un nuovo numero.
decimal | binary decimal | binary decimal | binary
---------|-------- ---------|-------- ---------|--------
5 | 101 5 | 101 5 | 101
& 6 | & 110 | 6 | | 110 ^6 |^110
= 4 | = 100 = 7 | = 111 = 3 | = 011
Come &
lavoro?
Per ciascuna coppia di bit: Se almeno uno dei due bit è 0, il bit risultante è 0. Se nessuno dei due bit è 0, il bit risultante è 1.
101 bit 3 | bit 2 | bit 1
& 110 -------|-------|-------
= 100 1 | 0 | 1
& | & | &
1 | 1 | 0
= | = | =
1 | 0 | 0
Come funziona |
?
Per ciascuna coppia di bit: Se almeno uno dei due bit è 1, il bit risultante è 1. Se nessuno dei due bit è 1, il bit risultante è 0.
101 bit 3 | bit 2 | bit 1
| 110 -------|-------|-------
= 111 1 | 0 | 1
| | | | |
1 | 1 | 0
= | = | =
1 | 1 | 1
Come funziona ^
?
Per ciascuna coppia di bit: Se i due bit sono differenti, il bit risultante è 1. Se i due bit sono uguali, il bit risultante è 0.
101 bit 3 | bit 2 | bit 1
^ 110 -------|-------|-------
= 011 1 | 0 | 1
^ | ^ | ^
1 | 1 | 0
= | = | =
0 | 1 | 1
hanno anche esaminare [ Cosa sono gli operatori bit a bit?] (Http://stackoverflow.com/q/276706/1048572) – Bergi