Bevezetés a Bitwise operátorokba a JavaScript-ben
A Bitwise operátorok a JavaScript-ben úgy működnek, hogy az operandumukon bináris számok (2. alap) ábrázolási formájukon működnek (különösen 32 bites számok formájában), nem pedig tizedes számukban (10. alap), oktális számokban (8. alap), vagy hexadecimális szám (16. alap) jelölés. Például az 1010 a tizedes szám bináris ábrázolása. A bit szerinti műveleteket a JavaScript a bináris ábrázolásban szereplő operátorok operandusaiin hajtja végre, de a kimenetet mindig a standard numerikus érték formájában adják vissza.
A bit bit operátor a JavaScript-ben konvertálja az operandusait a 2-bites aláírt egész formájuk 2-es komplementer formájává. Ezért minden alkalommal, amikor egy operátort egy egész számra dolgoznak, a származtatott érték az adott egész 2-es komplementer alakja. Egy egész szám 2-komplementerét a szám (azaz a bit bitjei nem a szám) plusz 1-es komplementere képezi.
Például a következő a 7-es szám 32-bites ábrázolása
00000000000000000000000000000111
Az alábbiakban 1 'kiegészítés van, azaz ~ 7
11111111111111111111111111111000
Az alábbiakban a 2. komplementer alakja látható, amely egyenlő -7-gyel
11111111111111111111111111111001
Bitwise operátor | Használat | Jelentés |
Bitálisan ÉS | x és y | Minden bitpozícióban 1-et ad vissza, ha mindkét megfelelő bit 1, egyébként 0. |
Bittenként VAGY | x | y | Minden bitpozícióban 1-et ad vissza, ha a megfelelő bit bármelyik értéke 1, egyébként 0. |
Bitálisan XOR | x y | Minden egyes bitpozícióban 0-t ad vissza, ha mindkét megfelelő bit értéke 1 vagy 0, egyébként 1, ha a bit eltérő. |
Kicsit NEM | ~ x | Megfordítja az x operandus bitjeit 1-ről 0-ra és fordítva. |
Bal Shift | x << y | A biteket balra tolja el az x bináris számnál y bittel, miközben jobbra nyomja a 0-at. |
Jel elmozdulása jobbra váltás | x >> y | A biteket jobbra mozgatja az x bináris számon y-bittel, miközben a bal szélső bitet másolja balra 32 bit teljesítéséhez. |
Nulla kitöltés jobbra váltás | x >>> y | A biteket jobbra tolja el az x bináris számon y bittel, miközben balra nyomja a 0-at. |
Bitwise logikai operátorok a JavaScript-ben
A Bitwise Logical operátorok a legtöbb nyelvben használt logikai operátorokból állnak, de különböznek egymástól, mivel a bit bit logikai operátorok apránként működnek. Az alábbiakban a bitvagon logikai operátorokat használjuk a JavaScript-ben:
1. Bitálisan ÉS
Ez egy bináris operátor, ampersand és & szimbólummal jelölve, amely ÉS műveletet hajt végre az argumentumainak egymást követő párjain. A „&” operátor csak akkor ad vissza 1-et, ha mindkét 1 bit más, akkor 0-t ad vissza. Ezért az ÉS műveletet összekapcsolhatjuk a szorzással is, mivel mindkettő ugyanazt a választ adja.
x | Y | X és Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Példa
10 (alap 10) = 0000000000000000000000000000101010
13 (10 alap) = 00000000000000000000000000001101
----------------------------
10 & 13 00000000000000000000000000001000 = 8 (10. alap)
2. Bittenként VAGY
Ez egy bináris operátor, amelyet egy „|” függőleges sáv szimbólum jelöl, amely VAGY műveletet hajt végre az argumentumok egymást követő párjain. A „|” operátor 1-et ad vissza, ha az egyik bit 1-es, vagy mindkettő 1-es, egyébként 0-t ad vissza. A bitsenkénti VAGY „|” eltér a logikai VAGY „||” -tól, mivel apránként működik.
x | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Példa
10 (alap 10) = 0000000000000000000000000000101010
13 (10 alap) = 00000000000000000000000000001101
----------------------------
10. | 13 00000000000000000000000000001111 = 15 (10. alap)
3. Bitkor XOR
Ez egy bináris operátor, amelyet a caret „^” szimbólum jelöl, és amely XOR műveletet hajt végre az argumentumok egymást követő párjain. A „^” operátor 0-t ad vissza, ha mindkét bit azonos (azaz mindkettő 1 vagy mindkettő 0), egyébként 1-et ad vissza.
x | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Példa
10 (alap 10) = 0000000000000000000000000000101010
13 (10 alap) = 00000000000000000000000000001101
----------------------------
10 13 00000000000000000000000000000111 = 7 (10. alap)
4. Bitkívül NEM
Ez egy egyhangú operátor, amelyet a tilde „~” szimbólum jelöl, és amely NEM műveletet hajt végre az argumentuma megfelelő bitjein. A „~” operátor megfordítja az operandus bitjeit, azaz 0-ról 1-re vagy 1-re 0-ra konvertálja.
x | ~ X |
0 | 1 |
1 | 0 |
Példa
10 (alap 10) = 0000000000000000000000000000101010
----------------------------
~ 10 11111111111111111111111111110101
Bitwise Shift operátorok a JavaScript-ben
A bitváltásos művelet során két argumentumot vesz igénybe, ahol az első argumentum a bináris szám, amelyen az eltolás műveletet végrehajtja, és a második argumentum azt a bitszámot adja meg, amelyen keresztül az első argumentumot el kell tolni. A használt operátor meghatározza a váltás műveletének irányát a bináris számban.
1. Bittengeresen balra váltás
Ez egy bináris operátor, amelyet „<<” szimbólum jelöl. Ez az operátor az első argumentum jobb szélső bitjét balra tolja el a második argumentum időszakainak értékével. A jobbról eltolódott biteket a jobboldali részben a 0 váltja fel minden végrehajtott műszak műveletnél.
Példa: 8 << 3 hozam 64
8 (alap 10) = 00000000000000000000000000001000
----------------------------
8 << 3 00000000000000000000000001000000 = 64 (10. alap)
2. Bittengely jobbra váltás
Ez bináris operátor, amelyet „>>>” szimbólum jelöl. Ez az operátor az első argumentum jobb szélső bitjét jobbra tolja el a második argumentum időszakainak értékével. A balról elmozdított biteket a baloldali részben lévő 0-val helyettesítjük minden végrehajtott műszak műveletnél.
Példa: 8 >>> 3 hozamot ad 1
8 (alap 10) = 00000000000000000000000000001000
----------------------------
8 >>> 3 00000000000000000000000000000001 = 1 (10. alap)
-8 (10 alap) = 1111111111111111111111111111111000
----------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (10. alap)
3. A jobb irányú váltást megindító bitképes jel
Ez egy bináris operátor, amelyet „>>” szimbólum jelöl. Ez az operátor az első argumentum jobb szélső bitjét jobbra tolja el a második argumentum időszakainak értékével. A balról eltolódott biteket a baloldali bittel (azaz jelző bittel) cseréljük ki a bal oldali bal oldali részben minden végrehajtott műszak művelethez.
Példa: 8 >>> 3 hozamot ad 1
8 (alap 10) = 00000000000000000000000000001000
----------------------------
8 >> 3 00000000000000000000000000000001 = 1 (10. alap)
-8 (10 alap) = 1111111111111111111111111111111000
----------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (10. alap)
Következtetés
Az érveket 32 bites bináris számokká alakítják át, és bit formájában fejezik ki őket (azaz 0 és 1). Az argumentumokban lévő számok, amelyek több mint 32 bitet eredményeznek, az msb-ket (a legfontosabb bit) eldobják. Ugyanez a szabály érvényes akkor is, ha a műszak működése közben a bit eltolódás balra, akkor az msb-nél lévő extra biteket eldobják, és a jobb oldali műszak során a jobb szélső részén növekvő extra biteket eldobják.
Előtte: 110011010100011101001000100000001110010010001
----------------------------
Után: 11101001000100000001110010010001
Minden megfelelő bit párosul egymással, azaz az első bit az első argumentum más bitjeivel, a második bit a második bittel és így tovább.
Az operátort minden bitnél alkalmazzuk (a bináris operátor számára bit bitnek kell lennie), ezért JavaScriptben bitveres operátornak nevezzük.
A bit-bit operátor gyakorlati alkalmazása: Bit zászlók, kommunikáció aljzaton / portokon keresztül, tömörítés, titkosítás, véges állapotú gépek, grafikák stb.
Ajánlott cikkek
Ez egy útmutató a Bitwise operátorokhoz JavaScript-ben. Itt tárgyaljuk a bevezetést, a bit-bit operátorok típusait a JavaScript-ben, például a logikai és a shift operátorokat, valamint a műveleteket. A következő cikkeket is megnézheti további információkért -
- JavaScript fordító
- Fordítva a JavaScript-ben
- Loop számára a JavaScript-ben
- Bevezetés a JavaScript-be