Introduktion till Bitvis-operatörer i JavaScript

Bitvis-operatörerna i JavaScript verkar på sin operand genom att använda dem i deras binära nummer (Base 2) -representationsform (särskilt 32-bitarsform), snarare än i deras decimalnummer (Base 10), oktala nummer (Base 8), eller hexadecimaltal (Base 16) notation. Till exempel är 1010 den binära representationen av decimaltalet tio. Bitvisa operationer i JavaScript utförs på operanterna för operatörerna i sina binära representationer, men utgången returneras alltid i standardformuläret.

En bitvis operatör i JavaScript konverterar sina operander till 2: s komplementform av sin 32-bitars signerade heltalform. Därför, närhelst en operatör arbetar på ett heltal, är det härledande värdet 2: s komplementform av det heltalet. 2: s komplement av ett heltal är 1: s komplement av antalet (dvs bitvis Inte av antalet) plus 1.

Exempelvis är följande 32-bitarsrepresentationen av siffran 7

00000000000000000000000000000111

Nedan är ett komplement, dvs ~ 7

11111111111111111111111111111000

Nedan är 2: s komplementform som är lika med -7

11111111111111111111111111111001

Bitvis operatörAnvändandeMenande
Bitvis OCHx & yReturnerar 1 i varje bitposition om båda motsvarande bitar är 1 annars 0.
Bitvis ELLERx | yKommer att returnera 1 i varje bitposition om någon av motsvarande bitar är 1 annars 0.
Bitvis XORx yKommer att returnera 0 i varje bitposition om båda motsvarande bitar är antingen 1 eller 0 elsewise 1 när bitarna är olika.
Bitvis INTE~ xBläddrar bitarna i operand x från 1 till 0 och vice versa.
Vänster Shiftx << ySkifter bitarna till vänster på det binära talet x med y bitar samtidigt som du trycker 0 på plats från höger.
Skylt förökande höger skiftx >> ySkifter bitarna åt höger på det binära talet x med y bitar medan du kopierar de vänstra bitarna till vänster för att slutföra 32 bitar.
Nollfyll höger skiftx >>> ySkifter bitarna till höger på det binära talet x med y bitar samtidigt som du trycker 0 på plats från vänster.

Bitvis logiska operatörer i JavaScript

Bitvisa logiska operatörer består av alla logiska operatörer som används på de flesta språk men de är olika på ett sätt eftersom bitvisa logiska operatörer fungerar bit för bit. Följande är logiska operatörer som används i JavaScript:

1. Bitvis OCH

Detta är en binär operatör betecknad med symbolen för ampersand "&" som utför en AND-operation på det påföljande paret av motsvarande bitar av sina argument. "&" -Operatören skulle returnera 1 endast om båda bitarna 1 är annars kommer den att återvända 0. Därför kan vi också korrelera OCH operation med multiplikation eftersom båda ger samma svar.

XYX & Y
000
010
100
111

Exempel

10 (bas 10) = 000000000000000000000000000000001010
13 (bas 10) = 000000000000000000000000000000001101

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

10 & 13 00000000000000000000000000001000 = 8 (bas 10)

2. Bitvis ELLER

Detta är en binär operatör betecknad med symbolen för en vertikal stapel "|" som utför en OR-operation på det påföljande paret av motsvarande bitar av dess argument. Operatören "|" returnerar 1 om någon av bitarna är 1 eller båda är 1 annars kommer den att återvända 0. Bitvis ELLER "|" skiljer sig från logisk ELLER "||" eftersom den fungerar bit för bit.

XYX | Y
000
011
101
111

Exempel

10 (bas 10) = 000000000000000000000000000000001010
13 (bas 10) = 000000000000000000000000000000001101

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

10 | 13 00000000000000000000000000001111 = 15 (bas 10)

3. Bitvis XOR

Detta är en binär operatör betecknad med symbolen för caret “^” som utför en XOR-operation på det påföljande paret av motsvarande bitar av sina argument. Operatören "^" returnerar 0 om båda bitarna är desamma (dvs båda är 1 eller båda är 0) annars kommer den att returnera 1.

XYX Y
000
011
101
110

Exempel

10 (bas 10) = 000000000000000000000000000000001010
13 (bas 10) = 000000000000000000000000000000001101

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

10 13 00000000000000000000000000000111 = 7 (bas 10)

4. Bitvis INTE

Detta är en unär operatör betecknad med symbolen för tilde "~" som utför en INTE-operation på motsvarande bitar av dess argument. Operatören "~" skulle invertera operandens bitar, dvs. konvertera 0 till 1 eller 1 till 0.

X~ X
01
10

Exempel

10 (bas 10) = 000000000000000000000000000000001010

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

~ 10 11111111111111111111111111110101

Bitvis skiftoperatörer i JavaScript

Vid bitvis skiftoperation tar också två argument där det första argumentet är det binära talet på vilket skiftoperationen kommer att utföras och det andra argumentet anger antalet bitar med vilka det första argumentet måste flyttas. Den operatör som används anger riktningen för skiftoperationen i det binära numret.

1. Bitvis vänsterförskjutning

Detta är en binär operatör betecknad med symbolen "<<". Denna operatör flyttar de högsta bitarna i det första argumentet till vänster med värdet på de andra argumenttiderna. De bitar som förskjutits från höger ersätts av 0 i den högsta delen för varje utförd skiftoperation.

Exempel: 8 << 3 ger 64

8 (bas 10) = 000000000000000000000000000000001000

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

8 << 3 00000000000000000000000001000000 = 64 (bas 10)

2. Bitvis högerskift

Detta är binär operatör betecknad med symbolen ">>>". Denna operatör kommer att flytta de högsta bitarna i det första argumentet till sin rätt med värdet av de andra argumenttiderna. Bitarna skiftade från vänster ersätts av 0 i den vänstra delen för varje utförd skiftoperation.

Exempel: 8 >>> 3 ger 1

8 (bas 10) = 000000000000000000000000000000001000

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

8 >>> 3 0000000000000000000000000000000101 = 1 (bas 10)

-8 (bas 10) = 11111111111111111111111111111000

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

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

3. Bitvis tecken som förökar högerskift

Detta är en binär operatör betecknad med symbolen ">>". Denna operatör kommer att flytta de högsta bitarna i det första argumentet till sin rätt med värdet av de andra argumenttiderna. De bitar som förskjutits från vänster ersätts av den vänstra biten (dvs teckenbiten) i den vänstra delen för varje utförd skiftoperation.

Exempel: 8 >>> 3 ger 1

8 (bas 10) = 000000000000000000000000000000001000

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

8 >> 3 0000000000000000000000000000000101 = 1 (bas 10)

-8 (bas 10) = 11111111111111111111111111111000

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

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

Slutsats

Argumenten konverteras till 32-bitars binära tal och uttrycks i form av bitar (dvs 0 och 1). Siffror i argumenten som resulterar med mer än 32 bitar får bort sina MSB: s (mest betydelsefulla bit). Samma regel gäller när under skiftdrift om bitskiftet till vänster kasseras de extra bitarna vid msb och under den högra växlingen kastas den extra biten som växer i den högra delen till höger.

Före: 110011010100011101001000100000001110010010001

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

Efter: 11101001000100000001110010010001

Varje motsvarande bit kopplas ihop med varandra, dvs den första biten med den första biten med andra argument, den andra biten med andra biten och så vidare.

Operatören tillämpas vid varje bit (för den binära operatören bör det vara ett bitbit), så kallade bitvisoperatörer i JavaScript.

Praktisk tillämpning av bitvis operatör är Bit-flaggor, kommunikation över uttag / portar, komprimering, kryptering, finite-state-maskiner, grafik, etc.

Rekommenderade artiklar

Detta är en guide till Bitvis-operatörer i JavaScript. Här diskuterar vi introduktionen, typer av bitvisa operatörer i JavaScript som logiska och skiftoperatörer tillsammans med dess funktioner. Du kan också titta på följande artiklar för att lära dig mer-

  1. JavaScript-kompilatorer
  2. Omvänd i JavaScript
  3. För Loop i JavaScript
  4. Introduktion till JavaScript

Kategori: