Úvod do bitových operátorů v JavaScriptu
Operátoři Bitwise v JavaScriptu jednají podle operandu tím, že na ně pracují ve formě reprezentace binárních čísel (Base 2) (zejména 32bitových čísel), nikoli na jejich desítkové číslo (Base 10), osmičková čísla (Base 8). nebo hexadecimální číslo (základ 16). Například 1010 je binární reprezentace desetinného čísla deset. Bitové operace v JavaScriptu se provádějí na operandech operátorů v jejich binárních reprezentacích, ale výstup se vždy vrací ve standardní formě číselných hodnot.
Bitový operátor v JavaScriptu převádí své operandy na formu 2 komplementu své 32bitové celočíselné formy podepsané. Proto, kdykoli operátor pracuje na celé číslo, odvozená hodnota je doplňkovou formou 2 celého čísla. Doplněk 2 celého čísla je doplněním čísla 1 (tj. Bitově ne čísla) plus 1.
Například následující je 32bitová reprezentace čísla 7
0000000000000000000000000000000111
Níže je 1 'doplněk, tj. ~ 7
111111111111111111111111111000
Níže je 2 forma doplňku, která se rovná -7
111111111111111111111111111001
Bitový operátor | Používání | Význam |
Bitově A | x & y | Vrátí 1 v každé bitové pozici, pokud oba odpovídající bity jsou 1 jinak 0. |
Bitově NEBO | x | y | Vrátí 1 v každé bitové pozici, pokud některý z odpovídajících bitů je 1 jinak 0. |
Bitový XOR | x y | Vrátí 0 v každé bitové pozici, pokud jsou oba odpovídající bity 1 nebo 0 jinak 1, kdykoli jsou bity odlišné. |
Bitově NE | ~ x | Převrátí bity operandu x od 1 do 0 a naopak. |
Levý Shift | x << y | Posune bity doleva na binární číslo x za y bity, zatímco posune 0 na místo zprava. |
Znak šířící pravý posun | x >> y | Posune bity doprava na binární číslo x x y bity, zatímco zkopíruje bity zcela vlevo doleva, aby se dokončilo 32 bitů. |
Nulový výplň vpravo | x >>> y | Posune bity doprava na binární číslo x za y bity, zatímco posune 0 na místo zleva. |
Bitové logické operátory v JavaScriptu
Bitové logické operátory se skládají ze všech logických operátorů používaných ve většině jazyků, ale liší se tak, jak logické operátory pracují po bitech. V JavaScriptu se používají bitové logické operátory:
1. Bitově A
Toto je binární operátor označený symbolem ampersand „&“, který provádí operaci AND na po sobě jdoucích párech odpovídajících bitů svých argumentů. Operátor „&“ vrátí 1, pouze pokud oba bity 1 jsou jinak, vrátí 0. Proto můžeme také korelovat AND operaci s násobením, protože oba dají stejnou odpověď.
X | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Příklad
10 (základ 10) = 00000000000000000000000000000000101010
13 (základ 10) = 000000000000000000000000000000001101
---------------------------------
10 a 13 0000000000000000000000000000001000 = 8 (základ 10)
2. Bitově NEBO
Jedná se o binární operátor označený symbolem svislého pruhu „|“, který provádí operaci OR na po sobě jdoucích párech odpovídajících bitů svých argumentů. Operátor „|“ by vrátil 1, pokud jeden z bitů je 1 nebo oba jsou 1, vrátí 0. Bitový NEBO „|“ je odlišný od logického NEBO „||“, protože pracuje kousek po kousku.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Příklad
10 (základ 10) = 00000000000000000000000000000000101010
13 (základ 10) = 000000000000000000000000000000001101
---------------------------------
10 | 13 0000000000000000000000000000001111 = 15 (základ 10)
3. Bitový XOR
Jedná se o binární operátor označený symbolem stříšky „^“, který provádí operaci XOR na po sobě jdoucích párech odpovídajících bitů svých argumentů. Operátor „^“ vrátí 0, pokud jsou oba bity stejné (tj. Oba jsou 1 nebo oba jsou 0), jinak vrátí 1.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Příklad
10 (základ 10) = 00000000000000000000000000000000101010
13 (základ 10) = 000000000000000000000000000000001101
---------------------------------
10 13 0000000000000000000000000000000111 = 7 (základ 10)
4. Bitově NE
Toto je unární operátor označený symbolem vlnovky „~“, který provádí operaci NOT na odpovídajících bitech svého argumentu. Operátor „~“ by invertoval bity operandu, tj. Převedl 0 na 1 nebo 1 na 0.
X | ~ X |
0 | 1 |
1 | 0 |
Příklad
10 (základ 10) = 00000000000000000000000000000000101010
---------------------------------
~ 10 111111111111111111111111110101
Operátory bitového posunu v JavaScriptu
V bitovém posuvném provozu se také berou dva argumenty, kde prvním argumentem je binární číslo, na kterém bude operace posunu provedena, a druhý argument určuje počet bitů, o které má být první argument posunut. Použitý operátor specifikuje směr směnné operace v binárním čísle.
1. Bitový posun doleva
Jedná se o binární operátor označený symbolem „<<“. Tento operátor posune bity nejvíce vpravo prvního argumentu doleva o hodnotu časů druhého argumentu. Bity posunuté zprava jsou nahrazeny 0 v pravé krajní části pro každou provedenou operaci posunu.
Příklad: 8 << 3 poskytuje 64
8 (základ 10) = 000000000000000000000000000000001000
---------------------------------
8 << 3 0000000000000000000000000001000000 = 64 (základ 10)
2. Bitwise Right Shift
Toto je binární operátor označený symbolem „>>>“. Tento operátor posune bity nejvíce vpravo prvního argumentu na jejich právo o hodnotu časů druhého argumentu. Bity posunuté zleva jsou nahrazeny 0 v levé krajní části pro každou provedenou operaci posunu.
Příklad: 8 >>> 3 poskytuje 1
8 (základ 10) = 000000000000000000000000000000001000
---------------------------------
8 >>> 3 0000000000000000000000000000000001 = 1 (základna 10)
-8 (základ 10) = 1111111111111111111111111111111000
---------------------------------
-8 >>> 3 000111111111111111111111111111111 = 536870911 (základ 10)
3. Bitový znak propagující pravý posun
Jedná se o binární operátor označený symbolem „>>“. Tento operátor posune bity nejvíce vpravo prvního argumentu na jejich právo o hodnotu časů druhého argumentu. Bity posunuté zleva jsou nahrazeny bitem zcela vlevo (tj. Znaménkovým bitem) v levé krajní části pro každou provedenou operaci posunu.
Příklad: 8 >>> 3 poskytuje 1
8 (základ 10) = 000000000000000000000000000000001000
---------------------------------
8 >> 3 0000000000000000000000000000000001 = 1 (základ 10)
-8 (základ 10) = 1111111111111111111111111111111000
---------------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (základ 10)
Závěr
Argumenty se převádějí na 32bitová binární čísla a vyjadřují se ve formě bitů (tj. 0 a 1). Čísla v argumentech, které mají za následek více než 32 bitů, zbaví své msb (nejvýznamnější bit). Stejné pravidlo platí, když během operace posunu, pokud je bitový posun doleva, pak jsou další bity v msb vyřazeny a během pravého posunu je vyřazen další bit rostoucí v pravé krajní části.
Před: 110011010100011101001000100000001110010010001
---------------------------------
Po: 11101001000100000001110010010001
Každý odpovídající bit je spárován jeden s druhým, tj. První bit s prvním bitem jiných argumentů, druhý bit s druhým bitem atd.
Operátor je aplikován na každý bit (pro binární operátor by měl být pár bitů), proto se v JavaScriptu nazývá bitové operátory.
Praktickou aplikací bitového operátora jsou bitové vlajky, komunikace přes soket / porty, komprese, šifrování, stroje konečných stavů, grafika atd.
Doporučené články
Toto je průvodce operátory Bitwise v JavaScriptu. Zde diskutujeme o úvodu, typech bitových operátorů v JavaScriptu, jako jsou logické a posunové operátory spolu s jeho operacemi. Další informace naleznete také v následujících článcích
- Kompilátory JavaScriptu
- Reverzní JavaScript
- Pro smyčku v JavaScriptu
- Úvod do JavaScriptu