Bitwise operaatorite tutvustus JavaScriptis
Bitwise'i operaatorid JavaScriptis tegutsevad vastavalt oma operandile, opereerides neid kahendarvude (Base 2) esitusvormis (eriti 32-bitiste arvude kujul), mitte kümnendarvu (Base 10), kaheksanumbrite (Base 8) asemel või kuueteistkümnendarvu (alus 16) märke. Näiteks 1010 on kümnendarvu kümme binaarne esitus. Bitsiväliseid toiminguid JavaScriptis teostatakse operaatorite operandidele nende binaarses esinduses, kuid väljund tagastatakse alati standardse arvulise väärtuse kujul.
Bituaarne operaator JavaScriptis teisendab nende operandid 32-bitise allkirjastatud täisarvvormi 2 komplemendi vormiks. Seega, kui operaatoril arvutatakse täisarv, on tuletatud väärtus selle täisarvu täiendusvorm 2. Täisarv 2 komplemendi moodustab numbri 1 komplemendi (st bitina mitte numbri) pluss 1.
Näiteks järgmine on numbri 7 32-bitine esitus
00000000000000000000000000000111
Allpool on 1 'komplement, st ~ 7
11111111111111111111111111111000
Allpool on toodud 2 komplemendi vorm, mis on võrdne -7
1111111111111111111111111111111001
Bitwise operaator | Kasutamine | Tähendus |
Bitwise JA | x ja y | Tagastab 1 igas bitiasendis, kui mõlemad vastavad bitid on 1, vastasel juhul 0. |
Bitwise VÕI | x | y | Tagastab 1 igas bitiasendis, kui mõni vastavatest bittidest on 1, vastasel juhul 0. |
Bitwise XOR | x y | Tagastab 0 igas bitipositsioonis, kui mõlemad vastavad bitid on kas 1 või 0 muidu 1, kui bitid on erinevad. |
Bitwise EI | ~ x | Pööratakse operandi x bitid vahemikku 1 kuni 0 ja vastupidi. |
Vasak Shift | x << a | Nihutab bitid binaarsel arvul x vasakule vasakule y bitti, surudes samal ajal 0 paremale. |
Parem nihutamist edendav märk | x >> y | Nihutab binaarsel arvul x b-d bitti paremale, kopeerides vasakpoolsemaid bitti vasakule, et 32 bitti täita. |
Null täitke paremale nihutamine | x >>> y | Nihutab bitaarsel arvul x b-d bittidest paremale, lükates 0 vasakult oma kohale. |
Bitwise loogilised operaatorid JavaScriptis
Bitwise-loogilised operaatorid koosnevad kõigist loogilistest operaatoritest, mida kasutatakse enamikus keeltes, kuid need on erinevad viisil, nagu bituuti-loogilised operaatorid töötavad bittides. Järgnevad on JavaScriptis kasutatavad bitiloogilised operaatorid:
1. Bitwise JA
See on binaarne operaator, mida tähistatakse sümboliga & ja, mis teostab AND-i oma argumentide vastavate bittide järjestikusel paaril. Operaator “&” naaseb 1-ga ainult siis, kui mõlemad bitid 1 on teisiti, tagastab ta 0. Seetõttu võime ka AND-i korrelatsiooni korrutada, kuna mõlemad annavad sama vastuse.
X | Y | X ja Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Näide
10 (alus 10) = 00000000000000000000000000001010
13 (alus 10) = 00000000000000000000000000001101
---------------------------
10 ja 13 00000000000000000000000000001000 = 8 (alus 10)
2. bittiliselt VÕI
See on binaarne operaator, mida tähistatakse vertikaalse riba sümboliga | |, mis teostab VÕI operatsiooni oma argumentide vastavate bittide järjestikusel paaril. Operaator “|” tagastab 1, kui kumbki bittidest on 1 või mõlemad on üks teine, tagastab ta 0. Bitikiirus VÕI “|” erineb loogilisest VÕI “||”, kuna see töötab vähehaaval.
X | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Näide
10 (alus 10) = 00000000000000000000000000001010
13 (alus 10) = 00000000000000000000000000001101
---------------------------
10 | 13 00000000000000000000000000001111 = 15 (alus 10)
3. Bitwise XOR
See on binaarne operaator, mida tähistatakse sümboliga caret “^”, mis teostab XOR-i operatsiooni oma argumentide vastavate bittide järjestikusel paaril. Operaator „^” tagastab 0, kui mõlemad bitid on samad (st mõlemad on 1 või mõlemad on 0), vastasel juhul naaseb 1.
X | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Näide
10 (alus 10) = 00000000000000000000000000001010
13 (alus 10) = 00000000000000000000000000001101
---------------------------
10 13 00000000000000000000000000000111 = 7 (alus 10)
4. Bitwise EI
See on ühtne operaator, mida tähistatakse sümboliga tilde “~” ja mis sooritab NOT argumendi vastavatel bittidel. “~” Operaator pöörab operandi bitid ümber, st teisendab väärtused 0 väärtuseks 1 või 1 väärtuseks 0.
X | ~ X |
0 | 1 |
1 | 0 |
Näide
10 (alus 10) = 00000000000000000000000000001010
---------------------------
~ 10 11111111111111111111111111110101
Bitwise Shift operaatorid JavaScript
Bituaarses nihutamises toimub ka kaks argumenti, kus esimene argument on binaarne arv, millel nihutamisoperatsioon teostatakse, ja teine argument täpsustab bittide arvu, mille võrra esimest argumenti tuleb nihutada. Kasutatav operaator täpsustab kahendnumbris nihutamise toimingu suuna.
1. Bitisuunas vasakule nihutamine
See on binaarne operaator, mida tähistatakse sümboliga <<<. See operaator nihutab esimese argumendi parempoolsemad bitid vasakule teise argumendi aja väärtuse võrra. Parempoolselt nihutatud bitid asendatakse iga teostatud nihutamisoperatsiooni korral parempoolses osas 0-ga.
Näide: 8 << 3 annab 64
8 (alus 10) = 00000000000000000000000000001000
---------------------------
8 << 3 00000000000000000000000001000000 = 64 (alus 10)
2. Parempoolne nihutamine
See on binaarne operaator, mida tähistatakse sümboliga “>>>”. See operaator nihutab esimese argumendi parempoolsemad bitid paremale teise argumendi aja väärtuse võrra. Vasakult nihutatud bitid asendatakse iga teostatud nihutamisoperatsiooni korral vasakpoolses osas numbriga 0.
Näide: 8 >>> 3 annab 1
8 (alus 10) = 00000000000000000000000000001000
---------------------------
8 >>> 3 00000000000000000000000000000001 = 1 (alus 10)
-8 (alus 10) = 1111111111111111111111111111111000
---------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (alus 10)
3. Parempoolse nihkega bitimärk
See on binaarne operaator, mida tähistatakse sümboliga >>. See operaator nihutab esimese argumendi parempoolsemad bitid paremale teise argumendi aja väärtuse võrra. Vasakult nihutatud bitid asendatakse iga teostatud nihutamisoperatsiooni korral kõige vasakpoolsemas osas vasakpoolseima bittiga (st viitbittiga).
Näide: 8 >>> 3 annab 1
8 (alus 10) = 00000000000000000000000000001000
---------------------------
8 >> 3 00000000000000000000000000000001 = 1 (alus 10)
-8 (alus 10) = 1111111111111111111111111111111000
---------------------------
-8 >> 3 1111111111111111111111111111111111 = -1 (alus 10)
Järeldus
Argumendid teisendatakse 32-bitisteks kahendarvudeks ja neid väljendatakse bittide kujul (st 0 ja 1). Arvudes rohkem kui 32 bitti sisaldavates argumentides olevad numbrid kaotavad nende msb-d (kõige olulisem bit). Sama reegel kehtib ka vahetuse ajal, kui bitti nihutatakse vasakule, siis msb-s olevad täiendavad bitid kõrvale jäetakse ja parempoolse nihke korral parempoolsemas osas kasvav lisabitti loobutakse.
Enne: 110011010100011101001000100000001110010010001
---------------------------
Pärast: 11101001000100000001110010010001
Kõik vastavad bitid on omavahel seotud, st esimene bit teiste argumentide esimese bitiga, teine bit teise bitiga ja nii edasi.
Operaatorit rakendatakse igal bitil (binaarse operaatori jaoks peaks see olema bitti paar), seetõttu nimetatakse seda JavaScriptis bittideks operaatoriteks.
Bitituperaatori praktiline rakendamine on bitilipud, kommunikatsioon pistikupesade / pordi kaudu, tihendamine, krüptimine, piiratud olekumasinad, graafika jne.
Soovitatavad artiklid
See on juhend bitwise operaatoritele JavaScriptis. Siin käsitleme sissejuhatust, JavaScripti bittide operaatorite tüüpe, näiteks loogilisi ja vahetustega operaatoreid koos selle toimingutega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -
- JavaScripti koostajad
- JavaScriptis tagurpidi
- Loop jaoks JavaScriptis
- Sissejuhatus JavaScripti