Ú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átorPoužíváníVýznam
Bitově Ax & yVrátí 1 v každé bitové pozici, pokud oba odpovídající bity jsou 1 jinak 0.
Bitově NEBOx | yVrátí 1 v každé bitové pozici, pokud některý z odpovídajících bitů je 1 jinak 0.
Bitový XORx yVrá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~ xPřevrátí bity operandu x od 1 do 0 a naopak.
Levý Shiftx << yPosune bity doleva na binární číslo x za y bity, zatímco posune 0 na místo zprava.
Znak šířící pravý posunx >> yPosune 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ň vpravox >>> yPosune 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ěď.

XYX & Y
000
010
100
111

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.

XYX | Y
000
011
101
111

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.

XYX Y
000
011
101
110

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
01
10

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

  1. Kompilátory JavaScriptu
  2. Reverzní JavaScript
  3. Pro smyčku v JavaScriptu
  4. Úvod do JavaScriptu

Kategorie: