Introduktion til Bitvis-operatører i JavaScript
Bitvis-operatørerne i JavaScript handler på deres operand ved at operere på dem i deres binære nummer (Base 2) repræsentationsform (især 32-bit-form), snarere end i deres decimalnummer (Base 10), oktale tal (Base 8), eller hexadecimal nummer (Base 16) notation. For eksempel er 1010 den binære repræsentation af decimaltallet ti. Bitvise operationer i JavaScript udføres på operanternes operander i deres binære repræsentationer, men output returneres altid i standard numerisk værdiform.
En bitvis operator i JavaScript konverterer deres operander til 2's komplementform af deres 32-bit signeret heltalform. Når en operatør arbejder på et heltal, er den deriverende værdi derfor 2's komplementform af det heltal. 2's komplement af et heltal er 1's komplement til tallet (dvs. bitvis ikke af tallet) plus 1.
For eksempel er det følgende 32-bit repræsentation af tallet 7
00000000000000000000000000000111
Nedenunder er 1 'komplement dvs. ~ 7
11111111111111111111111111111000
Nedenunder er 2's komplementform, der er lig med -7
11111111111111111111111111111001
Bitvis operatør | Anvendelse | Betyder |
Bitvis OG | x & y | Returnerer 1 i hver bitposition, hvis begge de tilsvarende bit er 1 ellers 0. |
Bitvis ELLER | x | y | Returnerer 1 i hver bitposition, hvis nogen af de tilsvarende bit er 1 ellers 0. |
Bitvis XOR | x y | Returnerer 0 i hver bitposition, hvis begge de tilsvarende bit er enten 1 eller 0 elsewise 1, hver gang bitene er forskellige. |
Bitvis IKKE | ~ x | Vil vende bitene i operand x fra 1 til 0 og vice versa. |
Venstre skift | x << y | Skifter bitene til venstre på det binære tal x med y bit mens du skubber 0 på plads fra højre. |
Skilt forplantning højre skift | x >> y | Skifter bitene til højre på det binære tal x med y-bits, mens de mest venstre bit kopieres til venstre for at afslutte 32 bit. |
Nul udfyld højre skift | x >>> y | Skifter bitene til højre på det binære tal x med y bit mens du skubber 0 på plads fra venstre. |
Bitvis logiske operatører i JavaScript
Bitvis logiske operatører består af alle de logiske operatører, der bruges på de fleste af sprogene, men de er forskellige på en måde, da bitvise logiske operatører fungerer bit for bit. Følgende er logiske operatører, der bruges i JavaScript:
1. Bitvis OG
Dette er en binær operatør betegnet med symbolet på ampersand "&", der udfører en AND-operation på det efterfølgende par af tilsvarende bit af dens argumenter. "&" -Operatøren vil kun returnere 1, hvis begge bit 1 er ellers, vil den vende tilbage 0. Derfor kan vi også korrelere OG-operation med multiplikation, fordi begge giver det samme svar.
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 lodret bjælke "|", der udfører en OR-operation på det efterfølgende par af tilsvarende bit af dens argumenter. "|" -Operatøren vil returnere 1, hvis en af bitene er 1, eller begge dele er 1, vil den returnere 0. Bitvisen ELLER "|" er forskellig 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 “^”, der udfører en XOR-operation på det efterfølgende par af tilsvarende bit af dens 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 uærlig operatør betegnet med symbolet på tilde “~”, der udfører en IKKE-operation på de tilsvarende bit af dets argument. Operatøren “~” ville invertere operandens bits, 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 tager det også to argumenter, hvor det første argument er det binære nummer, som skiftoperationen skal udføres på, og det andet argument specificerer antallet af bit, hvormed det første argument skal flyttes. Den operatør, der bruges, specificerer retningen for skiftoperationen i det binære nummer.
1. Bitvis venstre skift
Dette er en binær operatør betegnet med symbolet "<<". Denne operatør skifter de højeste bit af det første argument til venstre efter værdien af de andre argumenttider. Bitene, der forskydes fra højre, erstattes af 0 i den højre del for hver udførte skiftoperation.
Eksempel: 8 << 3 giver 64
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 << 3 00000000000000000000000001000000 = 64 (base 10)
2. Bitvis højre skift
Dette er binær operatør betegnet med symbolet ">>>". Denne operatør skifter de højeste bit af det første argument til deres højre med værdien af de andre argumenttider. Bitene, der forskydes fra venstre, erstattes af 0 i den venstre del for hver udført skiftoperation.
Eksempel: 8 >>> 3 giver 1
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 >>> 3 0000000000000000000000000000000101 = 1 (base 10)
-8 (base 10) = 11111111111111111111111111111000
----------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (base 10)
3. Bitvis tegn, der formerer højre skift
Dette er en binær operatør betegnet med symbolet ">>". Denne operatør flytter de højeste bit af det første argument til deres højre med værdien af de andre argumenttider. Bits, der er forskudt fra venstre, erstattes af bit til venstre (dvs. tegnbit) i den venstre del for hver skiftoperation, der udføres.
Eksempel: 8 >>> 3 giver 1
8 (base 10) = 000000000000000000000000000000001000
----------------------------
8 >> 3 0000000000000000000000000000000101 = 1 (base 10)
-8 (base 10) = 11111111111111111111111111111000
----------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (base 10)
Konklusion
Argumenterne konverteres til 32-bit binære tal og udtrykkes i form af bits (dvs. 0'er og 1'er). Tall i argumenterne, der resulterer med mere end 32 bit, får deres msb'er (den mest betydningsfulde bit) kasseret. Den samme regel gælder, når under skiftdrift, hvis bitskiftet til venstre, kasseres de ekstra bit på msb, og under højre skift kasseres den ekstra bit, der vokser i den højre del, til højre.
Før: 110011010100011101001000100000001110010010001
----------------------------
Efter: 11101001000100000001110010010001
Hver tilsvarende bit er parret med hinanden, dvs. den første bit med den første bit af andre argumenter, den anden bit med den anden bit og så videre.
Operatøren anvendes på hver bit (for den binære operatør skal det være et par bit), kaldes derfor bitvise operatorer i JavaScript.
Praktisk anvendelse af bitvis operatør er Bitflagg, kommunikation via socket / porte, komprimering, kryptering, finite state-maskiner, grafik osv.
Anbefalede artikler
Dette er en guide til Bitvis-operatører i JavaScript. Her diskuterer vi introduktionen, typer af bitvise operatører i JavaScript såsom logiske og skiftoperatører sammen med dets operationer. Du kan også se på de følgende artikler for at lære mere-
- JavaScript-kompilatorer
- Omvendt i JavaScript
- Til loop i JavaScript
- Introduktion til JavaScript