Introduksjon til Bitvis-operatører i JavaScript
Bitvis-operatørene i JavaScript handler på deres operand ved å operere på dem i deres binære nummer (Base 2) -representasjonsform (spesielt 32-bits tallform), i stedet for i desimaltall (Base 10), oktale tall (Base 8), eller heksadesimal nummer (Base 16) notasjon. For eksempel er 1010 den binære representasjonen av desimaltallet ti. Bitvise operasjoner i JavaScript utføres på operandene til operatørene i deres binære representasjoner, men utdataene returneres alltid i standard numerisk verdiform.
En bitvis operatør i JavaScript konverterer operandene sine til 2s komplementform av deres 32-bits signerte heltallform. Når en operatør arbeider på et helt tall, er avledningsverdien følgelig 2-erens komplementform av det heltallet. 2-komplementet til et heltall er 1-komplementet til tallet (dvs. bitvis Ikke av tallet) pluss 1.
For eksempel er følgende 32-biters representasjon av tallet 7
00000000000000000000000000000111
Nedenfor er 1 'komplement dvs. ~ 7
11111111111111111111111111111000
Nedenfor er 2s komplementform som er lik -7
11111111111111111111111111111001
Bitvis operatør | bruk | Betydning |
Bitvis OG | x & y | Returnerer 1 i hver bitposisjon hvis begge de tilsvarende bitene er 1 ellers 0. |
Bitvis ELLER | x | y | Returnerer 1 i hver bitposisjon hvis noen av de tilsvarende bitene er 1 ellers 0. |
Bitvis XOR | x y | Returnerer 0 i hver bitposisjon hvis begge de tilsvarende bitene er enten 1 eller 0 elsewise 1 når bitene er forskjellige. |
Bitvis IKKE | ~ x | Vil snu bitene til operand x fra 1 til 0 og omvendt. |
Venstre shift | x << y | Skifter bitene til venstre på det binære tallet x med y biter mens du skyver 0 på plass fra høyre. |
Skilt forplantende høyre skifte | x >> y | Skifter bitene til høyre på det binære tallet x med y biter mens du kopierer de venstre bitene til venstre for å fullføre 32 biter. |
Null fylle høyre skift | x >>> y | Skifter bitene til høyre på det binære tallet x med y biter mens du skyver 0 på plass fra venstre. |
Bitvis logiske operatører i JavaScript
Bitvis logiske operatører består av alle logiske operatører som brukes på de fleste språk, men de er forskjellige på en måte som bitvis logiske operatører opererer bit for bit. Følgende er logiske operatører som brukes i JavaScript:
1. Bitvis OG
Dette er en binær operatør betegnet med symbolet på ampersand “&” som utfører en AND-operasjon på det påfølgende par av tilsvarende biter av sine argumenter. "&" -Operatoren vil returnere 1 bare hvis begge bitene 1 er ellers vil den returnere 0. Derfor kan vi også korrelere OG-drift med multiplikasjon fordi begge vil gi det samme svaret.
X | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Eksempel
10 (base 10) = 000000000000000000000000000000001010
13 (base 10) = 000000000000000000000000000000001101
----------------------------
10 & 13 00000000000000000000000000001000 = 8 (base 10)
2. Bitvis ELLER
Dette er en binær operatør betegnet med symbolet på en vertikal bjelke "|" som utfører en OR-operasjon på det påfølgende par av tilsvarende biter av sine argumenter. Operatøren “|” vil returnere 1 hvis en av bitene er 1 eller begge deler er 1 ellers vil den returnere 0. Bitvis ELLER “|” er forskjellig fra logisk ELLER “||” da den fungerer bit for bit.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Eksempel
10 (base 10) = 000000000000000000000000000000001010
13 (base 10) = 000000000000000000000000000000001101
----------------------------
10 | 13 00000000000000000000000000001111 = 15 (base 10)
3. Bitvis XOR
Dette er en binær operatør betegnet med symbolet på caret “^” som utfører en XOR-operasjon på det påfølgende par av tilsvarende biter av sine argumenter. "^" Operatøren vil returnere 0 hvis begge bitene er de samme (dvs. begge er 1 eller begge er 0) ellers returnerer den 1.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Eksempel
10 (base 10) = 000000000000000000000000000000001010
13 (base 10) = 000000000000000000000000000000001101
----------------------------
10 13 00000000000000000000000000000111 = 7 (base 10)
4. Bitvis IKKE
Dette er en unær operatør betegnet med symbolet til tilde “~” som utfører en IKKE-operasjon på de tilsvarende bitene i argumentet. Operatøren “~” ville invertere bitene til operanden, dvs. konvertere 0 til 1 eller 1 til 0.
X | ~ X |
0 | 1 |
1 | 0 |
Eksempel
10 (base 10) = 000000000000000000000000000000001010
----------------------------
~ 10 11111111111111111111111111110101
Bitvis skiftoperatører i JavaScript
Ved bitvis skiftdrift tar også to argumenter der det første argumentet er det binære nummeret som skiftoperasjonen skal utføres på, og det andre argumentet spesifiserer antall biter som det første argumentet må forskyves med. Operatøren som brukes spesifiserer retningen på skiftoperasjonen i det binære nummeret.
1. Bitvis venstre skift
Dette er en binær operatør betegnet med symbolet "<<". Denne operatøren vil skifte de høyre bitene til det første argumentet til venstre etter verdien av de andre argumentetidene. Bitene forskjøvet fra høyre erstattes av 0 i den høyre delen for hver skiftoperasjon som utføres.
Eksempel: 8 << 3 gir 64
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 << 3 00000000000000000000000001000000 = 64 (base 10)
2. Bitvis høyre skift
Dette er binæroperatør betegnet med symbolet ">>>". Denne operatøren vil forskyve de høyre bitene til det første argumentet til høyre ved verdien av de andre argumenttider. Bitene forskjøvet fra venstre erstattes av 0 i den venstre delen for hver skiftoperasjon som utføres.
Eksempel: 8 >>> 3 gir 1
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 >>> 3 0000000000000000000000000000000101 = 1 (base 10)
-8 (base 10) = 11111111111111111111111111111000
----------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (base 10)
3. Bitvis skilt som formerer høyre skift
Dette er en binær operatør betegnet med symbolet ">>". Denne operatøren vil forskyve de høyre bitene til det første argumentet til høyre ved verdien av de andre argumenttider. Bitene forskjøvet fra venstre erstattes av bit til venstre (dvs. tegnbit) i den venstre delen for hver skiftoperasjon som utføres.
Eksempel: 8 >>> 3 gir 1
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 >> 3 0000000000000000000000000000000101 = 1 (base 10)
-8 (base 10) = 11111111111111111111111111111000
----------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (base 10)
Konklusjon
Argumentene konverteres til 32-bit binære tall og uttrykkes i form av biter (dvs. 0 og 1). Tall i argumentene som resulterer med mer enn 32 biter, får MSB-ene (den mest betydningsfulle biten) forkastet. Den samme regelen gjelder når under skiftdrift, hvis bitskiftet til venstre, så blir de ekstra bitene på msb kastet, og under høyre skifting kasseres den ekstra biten som vokser i høyre del.
Før: 110011010100011101001000100000001110010010001
----------------------------
Etter: 11101001000100000001110010010001
Hver korresponderende bit er sammenkoblet med hverandre, dvs. den første biten med den første biten av andre argumenter, den andre biten med den andre biten og så videre.
Operatøren blir brukt på hver bit (for den binære operatøren skal det være et par bit), derav kalt bitvise operatører i JavaScript.
Praktisk anvendelse av bitvis operatør er Bitflagg, kommunikasjon over socket / porter, komprimering, kryptering, endelige tilstandsmaskiner, grafikk, etc.
Anbefalte artikler
Dette er en guide til Bitvis-operatører i JavaScript. Her diskuterer vi introduksjonen, typer bitvise operatører i JavaScript som logiske og skiftoperatører sammen med dens operasjoner. Du kan også se på følgende artikler for å lære mer-
- JavaScript-kompilatorer
- Omvendt i JavaScript
- For Loop i JavaScript
- Introduksjon til JavaScript