Uvod v bitne operaterje v JavaScript
Operaterji bitnega prenosa v JavaScript delujejo na svoj operand, tako da delujejo na njih v obliki predstavitve svojega binarnega števila (Base 2) (zlasti v obliki 32-bitnih števil), ne pa v decimalnem številu (Baza 10), oktalnih številkah (Baza 8) ali šestnajstiško zapis (številka 16). Na primer, 1010 je binarni prikaz decimalnega števila deset. Bitne operacije v JavaScript se izvajajo na operandih operaterjev v njihovih binarnih predstavitvah, vendar se izhod vedno vrne v obliki standardne številčne vrednosti.
Nekoliko bitni operater v JavaScript pretvori njihove operande v 2 dopolnilno obliko njihovega 32-bitnega podpisanega celotnega obrazca. Torej, kadar operater deluje na celo število, je izpeljana vrednost 2 dopolnilna oblika tega celega števila. 2-je dopolnilo celega števila je 1-je dopolnilo števila (tj. Bitno ne od števila) plus 1.
Sledi na primer 32-bitna predstavitev števila 7
00000000000000000000000000000111
Spodaj je 1 'dopolnilo, tj. ~ 7
11111111111111111111111111111000
Spodaj je 2 dopolnilna oblika, ki je enaka -7
11111111111111111111111111111001
Bitwise Operator | Uporaba | Pomen |
Bitwise IN | x & y | Vrne se 1 v vsakem bitnem položaju, če sta oba ustrezna bita 1, sicer 0. |
Bitno ALI | x | y | Vrne se 1 v vsakem bitnem položaju, če je kateri koli od ustreznih bitov 1, sicer 0. |
Bitwise XOR | x y | V vsaki poziciji bitov vrne 0, če sta oba ustrezna bita 1 ali 0, kadar je bit enak. |
Bitwise NE | ~ x | Bitovi operanda x prevrnejo od 1 do 0 in obratno. |
Levi shift | x << y | Bitove premakne v levo na binarno številko x za y bitov, medtem ko pritisne 0 na desno stran. |
Znak širjenja desnega premika | x >> y | Bitove premakne v desno na binarno število x za y b, medtem ko bo skrajne leve bite kopiral v levo, da bo dokončalo 32 bitov. |
Zamik desnega polnjenja desno | x >>> y | Bitove premakne v desno na binarno število x za y b, medtem ko na levi potisne 0. |
Bitwise Logical Operators v JavaScript
Bitwise Logični operaterji so sestavljeni iz vseh logičnih operaterjev, ki se uporabljajo v večini jezikov, vendar so na tak način različni, kot bitnostno logični operaterji delujejo malo po bit. V JavaScript so uporabljeni naslednji bitni logični operaterji:
1. Porazen IN
To je binarni operater, označen s simbolom ampersand „&“, ki izvede operacijo AND na zaporednem paru ustreznih bitov svojih argumentov. Operater "&" bi vrnil 1 samo, če sta oba bita 1, bo vrnil 0. Zato lahko tudi povežemo AND z množenjem, ker bosta oba dala enak odgovor.
X | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Primer
10 (osnova 10) = 0000000000000000000000000000101010
13 (osnova 10) = 00000000000000000000000000001101
-----------------------------
10 in 13 00000000000000000000000000001000 = 8 (osnova 10)
2. Bitno ALI
To je binarni operater, označen s simbolom navpične vrstice "|", ki izvede operacijo OR na zaporednem paru ustreznih bitov svojih argumentov. Operater "|" bi vrnil 1, če je kateri koli od bitov 1 ali oba sta 1, se bo vrnil 0. Bitwise ALI "|" se razlikuje od logičnega ALI "||", saj deluje bitno.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Primer
10 (osnova 10) = 0000000000000000000000000000101010
13 (osnova 10) = 00000000000000000000000000001101
-----------------------------
10 | 13 00000000000000000000000000001111 = 15 (osnova 10)
3. Bitwise XOR
To je binarni operater, ki ga označuje simbol caret "^", ki izvede operacijo XOR na zaporednem paru ustreznih bitov svojih argumentov. Operater "^" bi vrnil 0, če sta oba bita enaka (tj. Oba sta 1 ali oba sta 0), sicer bo vrnila 1.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Primer
10 (osnova 10) = 0000000000000000000000000000101010
13 (osnova 10) = 00000000000000000000000000001101
-----------------------------
10 13 00000000000000000000000000000111 = 7 (osnova 10)
4. Bitwise NE
To je urski operater, označen s simbolom tilde "~", ki izvede operacijo NOT na ustreznih bitih svojega argumenta. Operater "~" bi obrnil bite operanda, torej pretvoril 0 v 1 ali 1 v 0.
X | ~ X |
0 | 1 |
1 | 0 |
Primer
10 (osnova 10) = 0000000000000000000000000000101010
-----------------------------
~ 10 11111111111111111111111111110101
Operatorji bitnega prestavljanja v JavaScript
Pri delu z bitnim premikom sta tudi dva argumenta, pri čemer je prvi argument binarno število, na katerem bo izvedena operacija premika, drugi argument pa določa število bitov, za katere je treba prvi argument prestaviti. Operator, ki se uporablja, v smeri binarne številke določa smer premika.
1. Bitwise Left Shift
To je binarni operater, označen s simbolom "<<". Ta operater pomakne skrajne desne bite prvega argumenta na levo za vrednost drugega argumenta. Bitovi, premaknjeni z desne strani, se pri vsaki izvedeni izmeni zamenjajo z 0 na skrajnem desnem delu.
Primer: 8 << 3 donosi 64
8 (osnova 10) = 00000000000000000000000000001000
-----------------------------
8 << 3 00000000000000000000000001000000 = 64 (osnova 10)
2. Bitwise Right Shift
To je binarni operater, označen s simbolom “>>>”. Ta operater premakne skrajne desne bite prvega argumenta v njihovo pravico za vrednost drugega argumenta. Bitovi, pomaknjeni z leve strani, se za vsako opravljeno premik zamenjajo z 0 na skrajnem levem delu.
Primer: 8 >>> 3 donosi 1
8 (osnova 10) = 00000000000000000000000000001000
-----------------------------
8 >>> 3 00000000000000000000000000000001 = 1 (osnova 10)
-8 (osnova 10) = 11111111111111111111111111111000
-----------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (osnova 10)
3. Bitnostno podpiranje širjenja desnega premika
To je binarni operater, označen s simbolom ">>". Ta operater premakne skrajne desne bite prvega argumenta v njihovo pravico za vrednost drugega argumenta. Bitovi, premaknjeni z leve strani, se za vsako izvedeno operacijo premika nadomestijo z levim bitjem (tj. Znakom) v skrajnem levem delu.
Primer: 8 >>> 3 donosi 1
8 (osnova 10) = 00000000000000000000000000001000
-----------------------------
8 >> 3 00000000000000000000000000000001 = 1 (osnova 10)
-8 (osnova 10) = 11111111111111111111111111111000
-----------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (osnova 10)
Zaključek
Argumenti se pretvorijo v 32-bitna binarna števila in se izrazijo v obliki bitov (tj. 0 in 1). Številke v argumentih, ki izhajajo z več kot 32 bitov, zavržejo svoj msb (najpomembnejši bit). Enako pravilo velja, kadar se med delovanjem premika, če se premik bita levo, potem se dodatni biti v msb zavržejo, med desnim premikom pa se dodatni bit, ki raste v skrajnem desnem delu, zavrže.
Pred tem: 110011010100011101001000100000001110010010001
-----------------------------
Po: 11101001000100000001110010010001
Vsak ustrezni bit je seznanjen med seboj, tj. Prvi bit s prvim bitom drugih argumentov, drugi bit z drugim bitjem in tako naprej.
Operater se uporablja za vsak bit (za binarni operater bi moral biti to par bitov), zato se v JavaScript imenujejo bitni operaterji.
Praktična uporaba bitovskega operaterja so bitne zastavice, komunikacija preko vtičnice / vrat, stiskanje, šifriranje, stroji s končnim stanjem, grafika itd.
Priporočeni članki
To je vodnik za Bitwise Operatorje v JavaScript. Tukaj razpravljamo o uvedbi, vrstah bitnih operaterjev v JavaScript, kot so logični operaterji in operatorji premikov ter njegove operacije. Če želite izvedeti več, si oglejte tudi naslednje članke -
- Kompilatorji JavaScript
- Obrni v JavaScript
- Za zanko v JavaScript
- Uvod v JavaScript