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ör | Användande | Menande |
Bitvis OCH | x & y | Returnerar 1 i varje bitposition om båda motsvarande bitar är 1 annars 0. |
Bitvis ELLER | x | y | Kommer att returnera 1 i varje bitposition om någon av motsvarande bitar är 1 annars 0. |
Bitvis XOR | x y | Kommer 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 | ~ x | Bläddrar bitarna i operand x från 1 till 0 och vice versa. |
Vänster Shift | x << y | Skifter 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 skift | x >> y | Skifter 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 skift | x >>> y | Skifter 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.
X | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
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.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
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.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
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 |
0 | 1 |
1 | 0 |
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-
- JavaScript-kompilatorer
- Omvänd i JavaScript
- För Loop i JavaScript
- Introduktion till JavaScript