Introducere pentru operatorii Bitwise în JavaScript

Operatorii Bitwise din JavaScript acționează asupra operandului lor operând pe ei în forma lor de reprezentare a numărului binar (Baza 2) (în special forma numerelor pe 32 de biți), mai degrabă decât în ​​numărul lor zecimal (Baza 10), numerele octale (Baza 8) sau nota numărul hexadecimal (Baza 16). De exemplu, 1010 este reprezentarea binară a numărului zecimal de zece. Operațiunile în bit în JavaScript se efectuează pe operanțele operatorilor în reprezentările binare ale acestora, dar ieșirea este întotdeauna returnată în forma de valoare numerică standard.

Un operator de biți în JavaScript convertește operanțele lor în forma complementară a celor 2 din forma lor integră semnată pe 32 de biți. Prin urmare, de fiecare dată când un operator este lucrat la un număr întreg, valoarea derivată este forma complementului 2 al acelui număr întreg. Complementul 2 al unui număr întreg este complementul numărului 1 al numărului (adică bit Not Not of the number) plus 1.

De exemplu, următorul este reprezentarea pe 32 de biți a numărului 7

00000000000000000000000000000111

Mai jos este 1 'complement adică ~ 7

11111111111111111111111111111000

Mai jos este forma complementului 2 care este egal cu -7

11111111111111111111111111111001

Operator BitlikefolosireSens
În mod Bit ANDX yVa întoarce 1 în fiecare poziție de biți dacă ambii biți corespunzători sunt 1 altfel 0.
OR în mod OR saux | yVa întoarce 1 în fiecare poziție de biți dacă oricare dintre biții corespunzători este 1 altfel 0.
Bit-XORx yVa întoarce 0 în fiecare poziție de biți dacă ambii biți corespunzători sunt fie 1, fie 0 altfel 1 ori de câte ori biții sunt diferiți.
Bitlike NU~ xVor capta biți din operandul x de la 1 la 0 și invers.
Schimbarea la stângax << yVa muta biții la stânga lor pe numărul binar x cu y biți în timp ce împinge 0 în loc de la dreapta.
Semnul care propagă schimbarea la dreaptax >> yVa muta biții la dreapta pe numărul binar x cu y biți, în timp ce copiază cei mai stânga biți spre stânga pentru a completa 32 biți.
Schimbare dreapta la zerox >>> yVa muta biții la dreapta lor pe numărul binar x cu y biți în timp ce împinge 0 în loc din stânga.

Operatori logici pe bit în JavaScript

Operatorii logici Bitwise constau din toți operatorii logici folosiți în majoritatea limbilor, dar aceștia diferă într-un mod, deoarece operatorii logici în mod obișnuit operează bit cu pic. Următoarele sunt operatorii logici biți folosiți în JavaScript:

1. Bit în sens AND

Acesta este un operator binar notat cu simbolul ampersand „&” care efectuează o operație AND pe perechea consecutivă de biți corespondenți ai argumentelor sale. Operatorul „&” ar întoarce 1 numai dacă ambii biți 1 sunt altceva, acesta va reveni 0. Prin urmare, putem corela și operația AND cu înmulțirea, deoarece ambii vor da același răspuns.

XYX Y
000
010
100
111

Exemplu

10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101

----------------------------

10 & 13 00000000000000000000000000001000 = 8 (baza 10)

2. OR în mod Bit

Acesta este un operator binar notat cu simbolul unei bare verticale „|” care efectuează o operație OR pe pereche consecutivă de biți corespondenți ai argumentelor sale. Operatorul „|” ar întoarce 1 dacă oricare dintre biți este 1 sau amândoi sunt 1 altul va reveni 0. OR sau „|” în bit este diferit de OR sau „||” logic, deoarece funcționează bit cu bit.

XYX | Y
000
011
101
111

Exemplu

10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101

----------------------------

10 | 13 0000000000000000000000000000001111 = 15 (baza 10)

3. Bit-XOR

Acesta este un operator binar notat cu simbolul caret „^” care efectuează o operație XOR pe perechea consecutivă de biți corespondenți ai argumentelor sale. Operatorul „^” ar întoarce 0 dacă ambii biți sunt identici (adică ambii sunt 1 sau ambii sunt 0) altfel va întoarce 1.

XYX Y
000
011
101
110

Exemplu

10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101

----------------------------

10 13 00000000000000000000000000000111 = 7 (baza 10)

4. Bit Bit NU

Acesta este un operator unitar notat cu simbolul tilde „~” care efectuează o operație NU pe biții corespunzători ai argumentului său. Operatorul „~” ar inversa biții operanzului, adică convertesc 0 la 1 sau 1 la 0.

X~ X
01
10

Exemplu

10 (baza 10) = 00000000000000000000000000001010

----------------------------

~ 10 11111111111111111111111111110101

Operatori de schimb de viteze în JavaScript

În schimbul de operare în schimb de biți se ia și două argumente în care primul argument este numărul binar pe care se va efectua operația de schimbare și al doilea argument specifică numărul de biți prin care primul argument trebuie schimbat. Operatorul utilizat este specificat direcția operației de schimbare a numărului binar.

1. Schimbare în sens stânga în timp

Acesta este un operator binar notat cu simbolul „<<”. Acest operator va muta cei mai drepți biți ai primului argument la stânga lor prin valoarea celui de-al doilea argument. Biții deplasați de la dreapta sunt înlocuiți cu 0 în partea dreaptă pentru fiecare operație de schimb efectuată.

Exemplu: 8 << 3 obține 64

8 (baza 10) = 00000000000000000000000000001000

----------------------------

8 << 3 00000000000000000000000001000000 = 64 (baza 10)

2. Schimbare dreapta în sensul de biți

Acesta este un operator binar notat cu simbolul „>>>”. Acest operator va muta cei mai drepți biți ai primului argument la dreapta lor cu valoarea celui de-al doilea argument. Biții deplasați de la stânga sunt înlocuiți cu 0 în partea din stânga pentru fiecare operație de deplasare efectuată.

Exemplu: 8 >>> 3 obțin 1

8 (baza 10) = 00000000000000000000000000001000

----------------------------

8 >>> 3 00000000000000000000000000000001 = 1 (baza 10)

-8 (baza 10) = 11111111111111111111111111111000

----------------------------

-8 >>> 3 00011111111111111111111111111111 = 536870911 (baza 10)

3. Semn cu bituri Propagarea schimbării drepte

Acesta este un operator binar notat cu simbolul „>>”. Acest operator va muta cei mai drepți biți ai primului argument la dreapta lor cu valoarea celui de-al doilea argument. Biții deplasați de la stânga sunt înlocuiți de bitul din stânga (adică bit de semn) în partea din stânga pentru fiecare operație de deplasare efectuată.

Exemplu: 8 >>> 3 obțin 1

8 (baza 10) = 00000000000000000000000000001000

----------------------------

8 >> 3 00000000000000000000000000000001 = 1 (baza 10)

-8 (baza 10) = 11111111111111111111111111111000

----------------------------

-8 >> 3 11111111111111111111111111111111 = -1 (baza 10)

Concluzie

Argumentele sunt transformate în numere binare pe 32 de biți și exprimate sub formă de biți (adică 0 și 1). Numerele din argumentele rezultate cu mai mult de 32 de biți scapă msb-ul (cel mai semnificativ bit) al acestora. Aceeași regulă se aplică atunci când în timpul funcționării deplasării dacă deplasarea biților din stânga, atunci biții în plus din msb sunt aruncați și în timpul deplasării drepte, bitul suplimentar care crește în partea din dreapta este eliminat.

Înainte: 110011010100011101001000100000001110010010001

----------------------------

După: 11101001000100000001110010010001

Fiecare bit corespunzător este asociat unul cu celălalt, adică primul bit cu primul bit de alte argumente, al doilea bit cu al doilea bit și așa mai departe.

Operatorul se aplică la fiecare biți (pentru operatorul binar ar trebui să fie o pereche de biți), de aceea sunt numiți operatori bit în JavaScript.

Aplicarea practică a operatorului de biți sunt steaguri Bit, comunicare prin soclu / porturi, compresie, criptare, mașini cu stare finită, grafică etc.

Articole recomandate

Acesta este un ghid pentru operatorii Bitwise din JavaScript. Aici vom discuta despre introducerea, tipurile de operatori cu bit în JavaScript, cum ar fi operatorii logici și shift, împreună cu operațiunile sale. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-

  1. Compilatoare JavaScript
  2. Inversează JavaScript
  3. Pentru buclă în JavaScript
  4. Introducere în JavaScript