Inleiding tot Bitwise-operators in JavaScript

De Bitwise-operatoren in JavaScript handelen op hun operand door ze te bedienen in hun binaire nummer (Base 2) representatievorm (in het bijzonder 32-bit getallenvorm), in plaats van in hun decimaal getal (Base 10), octale getallen (Base 8), of hexadecimale nummer (Base 16) notatie. 1010 is bijvoorbeeld de binaire weergave van het decimale getal tien. Bitwise-bewerkingen in JavaScript worden uitgevoerd op de operanden van de operatoren in hun binaire representaties, maar de uitvoer wordt altijd geretourneerd in de standaard numerieke waarde vorm.

Een bitsgewijze operator in JavaScript converteert hun operanden naar de complementvorm van de 2 van hun 32-bits ondertekende geheel getal. Vandaar dat wanneer een operator aan een geheel getal wordt bewerkt, de afgeleide waarde de complementvorm van de 2 van dat gehele getal is. Het complement van de 2 van een geheel getal is het complement van de 1 van het getal (dwz bitgewijze niet van het getal) plus 1.

Het volgende is bijvoorbeeld de 32-bits weergave van het getal 7

00000000000000000000000000000111

Het onderstaande is 1 'complement ie ~ 7

11111111111111111111111111111000

Het onderstaande is de complementvorm van 2 die gelijk is aan -7

11111111111111111111111111111001

Bitwise OperatorGebruikBetekenis
Bitwise ANDx & yRetourneert 1 in elke bitpositie als beide overeenkomstige bits 1 zijn, anders 0.
Bitgewijs OFx | YRetourneert 1 in elke bitpositie als een van de overeenkomstige bits 1 is, anders 0.
Bitwise XORx yRetourneert 0 in elke bitpositie als beide corresponderende bits 1 of 0 zijn of 1, telkens wanneer de bits verschillend zijn.
Bitwise NIET~ xZal de bits van de operand x omdraaien van 1 naar 0 en vice versa.
Linker shiftx << yVerplaatst de bits naar links op het binaire getal x met y bits terwijl 0 van rechts op zijn plaats wordt geduwd.
Teken dat de juiste shift doorgeeftx >> yVerplaatst de bits naar rechts op het binaire getal x met y bits terwijl de meest linkse bits naar links worden gekopieerd om 32 bits te voltooien.
Nulvulling naar rechts verschuivenx >>> yVerplaatst de bits naar rechts op het binaire getal x met y bits, terwijl 0 vanaf de linkerkant op zijn plaats wordt gedrukt.

Bitwise Logical Operators in JavaScript

Bitwise Logical-operators bestaan ​​uit alle logische operators die in de meeste talen worden gebruikt, maar ze verschillen op een bepaalde manier omdat bitwise logische operators beetje bij beetje werken. De volgende zijn bitsgewijze logische operatoren die in JavaScript worden gebruikt:

1. Bitwise AND

Dit is een binaire operator aangeduid met het symbool van een en-teken "&" dat een EN-bewerking uitvoert op het opeenvolgende paar overeenkomstige bits van de argumenten. De operator "&" retourneert alleen 1 als beide bits 1 anders zijn, wordt 0 geretourneerd. Daarom kunnen we EN-bewerking ook correleren met vermenigvuldiging, omdat beide hetzelfde antwoord geven.

XYX & Y
000
010
100
111

Voorbeeld

10 (basis 10) = 0000000000000000000000000000101010
13 (basis 10) = 00000000000000000000000000001101

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

10 & 13 00000000000000000000000000001000 = 8 (basis 10)

2. Bitgewijs OF

Dit is een binaire operator die wordt aangeduid met het symbool van een verticale balk "|" die een OF-bewerking uitvoert op het opeenvolgende paar overeenkomstige bits van de argumenten. De operator "|" retourneert 1 als een van de bits 1 is of beide 1 zijn, anders wordt 0 geretourneerd. Bitwise OF "|" verschilt van logisch OF "||" omdat het bit voor bit werkt.

XYX | Y
000
011
101
111

Voorbeeld

10 (basis 10) = 0000000000000000000000000000101010
13 (basis 10) = 00000000000000000000000000001101

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

10 | 13 00000000000000000000000000001111 = 15 (basis 10)

3. Bitwise XOR

Dit is een binaire operator die wordt aangeduid met het symbool van het teken '^' dat een XOR-bewerking uitvoert op het opeenvolgende paar overeenkomstige bits van de argumenten. De "^" -operator retourneert 0 als beide bits hetzelfde zijn (dwz beide zijn 1 of beide zijn 0), anders retourneert deze 1.

XYX Y
000
011
101
110

Voorbeeld

10 (basis 10) = 0000000000000000000000000000101010
13 (basis 10) = 00000000000000000000000000001101

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

10 13 00000000000000000000000000000111 = 7 (basis 10)

4. Bitwise NIET

Dit is een unaire operator aangeduid door het symbool van tilde "~" die een NIET-bewerking uitvoert op de overeenkomstige bits van zijn argument. De operator "~" zou de bits van de operand omkeren, dwz 0 naar 1 of 1 naar 0 converteren.

X~ X
01
10

Voorbeeld

10 (basis 10) = 0000000000000000000000000000101010

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

~ 10 11111111111111111111111111110101

Bitwise Shift-operators in JavaScript

In bitgewijze bewerking zijn er ook twee argumenten nodig, waarbij het eerste argument het binaire getal is waarop de shift-bewerking wordt uitgevoerd en het tweede argument het aantal bits specificeert waarmee het eerste argument moet worden verschoven. De operator die wordt gebruikt, geeft de richting van de dienst in het binaire getal aan.

1. Bitwise Left Shift

Dit is een binaire operator die wordt aangeduid met het symbool "<<". Deze operator verplaatst de meest rechtse bits van het eerste argument naar links door de waarde van het tweede argument keer. De van rechts verschoven bits worden vervangen door 0 in het meest rechtse deel voor elke uitgevoerde shift-operatie.

Voorbeeld: 8 << 3 levert 64 op

8 (basis 10) = 0000000000000000000000000000001000

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

8 << 3 00000000000000000000000001000000 = 64 (basis 10)

2. Bitwise Right Shift

Dit is een binaire operator die wordt aangeduid met het symbool ">>>". Deze operator verplaatst de meest rechtse bits van het eerste argument naar rechts met de waarde van de tweede argumenttijden. De van links verschoven bits worden vervangen door 0 in het meest linkse deel voor elke uitgevoerde schakelbewerking.

Voorbeeld: 8 >>> 3 levert 1 op

8 (basis 10) = 0000000000000000000000000000001000

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

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

-8 (basis 10) = 11111111111111111111111111111000

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

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

3. Bitwise Sign Propage Right Shift

Dit is een binaire operator die wordt aangeduid met het symbool ">>". Deze operator verplaatst de meest rechtse bits van het eerste argument naar rechts met de waarde van de tweede argumenttijden. De van links verschoven bits worden vervangen door het meest linkse bit (dwz tekenbit) in het meest linkse deel voor elke uitgevoerde shift-operatie.

Voorbeeld: 8 >>> 3 levert 1 op

8 (basis 10) = 0000000000000000000000000000001000

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

8 >> 3 00000000000000000000000000000001 = 1 (basis 10)

-8 (basis 10) = 11111111111111111111111111111000

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

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

Conclusie

De argumenten worden omgezet in 32-bits binaire getallen en uitgedrukt in de vorm van bits (dat wil zeggen nullen en enen). Getallen in de argumenten die resulteren in meer dan 32 bits, krijgen hun MSB's (meest significante bit) verwijderd. Dezelfde regel is van toepassing wanneer tijdens de shift-bewerking de bit-shift naar links wordt verwijderd, dan worden de extra bits bij msb weggegooid en tijdens de rechter-shift wordt de extra bit die groeit in het meest rechtse deel weggegooid.

Vóór: 110011010100011101001000100000001110010010001

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

Na: 11101001000100000001110010010001

Elk corresponderend bit wordt met elkaar gekoppeld, dwz het eerste bit met het eerste bit van andere argumenten, het tweede bit met tweede bit enzovoort.

De operator wordt op elke bit toegepast (voor de binaire operator moet dit een bit zijn), vandaar bitwise-operatoren in JavaScript.

Praktische toepassing van bitsgewijze operator zijn bitvlaggen, communicatie via socket / poorten, compressie, codering, eindige machines, grafische afbeeldingen, enz.

Aanbevolen artikelen

Dit is een handleiding voor Bitwise-operators in JavaScript. Hier bespreken we de introductie, typen bitsgewijze operators in JavaScript, zoals logische en shift-operators, samen met de bewerkingen. U kunt ook de volgende artikelen bekijken voor meer informatie-

  1. JavaScript-compilers
  2. Omgekeerd in JavaScript
  3. Voor lus in JavaScript
  4. Inleiding tot JavaScript