2010-12-26 12 views
8
  • 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?

+0

hanno anche esaminare [ Cosa sono gli operatori bit a bit?] (Http://stackoverflow.com/q/276706/1048572) – Bergi

risposta

13
<<, >> 

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".

+0

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. –

2

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 
Problemi correlati