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 Operator | Gebruik | Betekenis |
Bitwise AND | x & y | Retourneert 1 in elke bitpositie als beide overeenkomstige bits 1 zijn, anders 0. |
Bitgewijs OF | x | Y | Retourneert 1 in elke bitpositie als een van de overeenkomstige bits 1 is, anders 0. |
Bitwise XOR | x y | Retourneert 0 in elke bitpositie als beide corresponderende bits 1 of 0 zijn of 1, telkens wanneer de bits verschillend zijn. |
Bitwise NIET | ~ x | Zal de bits van de operand x omdraaien van 1 naar 0 en vice versa. |
Linker shift | x << y | Verplaatst 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 doorgeeft | x >> y | Verplaatst 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 verschuiven | x >>> y | Verplaatst 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.
X | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
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.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
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.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
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 |
0 | 1 |
1 | 0 |
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-
- JavaScript-compilers
- Omgekeerd in JavaScript
- Voor lus in JavaScript
- Inleiding tot JavaScript