Uvod u bitрозne operatore u JavaScript-u
Operatori bitova u JavaScript djeluju na svoj operand radeći na njima u obrascu reprezentacije njihovog binarnog broja (Baza 2) (posebno u obliku 32-bitnih brojeva), a ne u decimalnom broju (Baza 10), oktalnim brojevima (Baza 8), ili šesterokutni broj (Baza 16). Na primjer, 1010 je binarni prikaz decimalnog broja deset. Operacije u bitisu u JavaScript-u izvode se na operandima operatora u njihovim binarnim prikazima, ali izlaz se uvijek vraća u obliku standardne numeričke vrijednosti.
Bitni operator u JavaScript-u pretvara svoje operande u oblik 2 komplementa 32-bitnog potpisanog cjelobrojnog oblika. Stoga, kad god je operator operiran na cijeli broj, izvedena vrijednost je 2 komplementarni oblik tog cijelog broja. 2 komplementa cijelog broja je 1 dopunjavanje broja (tj. Bitov Ne broja) plus 1.
Na primjer, slijedi 32-bitni prikaz broja 7
00000000000000000000000000000111
Dolje je 1 'komplementa, tj. ~ 7
11111111111111111111111111111000
Ispod je 2 komplementa oblika koji je jednak -7
11111111111111111111111111111001
Bitwise Operator | upotreba | Značenje |
Bitwise I | x & y | Vratit će se po 1 u svakoj bitnoj poziciji ako su oba odgovarajuća bita 1 inače 0. |
Bitno ILI | x | y | Vratit će se 1 u svakoj poziciji bita ako je bilo koji od odgovarajućih bitova 1, a u suprotnom je 0. |
Bitno XOR | x y | Vratit će 0 u svakoj poziciji bita ako su oba odgovarajuća bita ili 1 ili 0 drugo 1 kad god su bitovi različiti. |
Bitally NOT | ~ x | Pomaknut će se bitovi operanda x s 1 na 0 i obrnuto. |
Smjena ulijevo | x << y | Pomaknit će bite s lijeve strane na binarni broj x za y bita dok istodobno gura 0 na svoje mjesto. |
Znak koji se širi pravo pomakom | x >> y | Pomakne li bitove udesno na binarni broj x za y bita dok kopira krajnje lijeve bitove ulijevo do 32 bita. |
Nula ispravnog pomaka | x >>> y | Pomakne li bitove udesno na binarni broj x za y bitove, a pritom gurajući 0 na lijevoj strani. |
Bitwise Logical Operators u JavaScript-u
Bitwise Logički operatori sastoje se od svih logičkih operatera koji se koriste u većini jezika, ali oni se razlikuju na način na koji bitnostno logički operatori djeluju bitno. Sljedeći su bitni logički operatori koji se koriste u JavaScriptu:
1. Bitwise I
Ovo je binarni operator označen simbolom ampersand „&“ koji izvodi operaciju AND na uzastopnom paru odgovarajućih bita svojih argumenata. Operator "&" vratio bi 1 samo ako su oba bita 1, vratit će se 0. Stoga možemo i korelirati operaciju AND s množenjem, jer će oba dati isti odgovor.
x | Y | X & Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Primjer
10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101
----------------------------
10 i 13 00000000000000000000000000001000 = 8 (baza 10)
2. Bitno ILI
Ovo je binarni operator označen simbolom okomite trake "|" koja izvodi operaciju ILI na uzastopnom paru odgovarajućih bita svojih argumenata. Operator "|" vraća 1 ako je bilo koji od bitova 1 ili su oba jedan, vratit će se 0. Bitwise ILI "|" se razlikuju od logičkog ILI "||" jer djeluje pomalo.
x | Y | X | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Primjer
10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101
----------------------------
10 | 13 00000000000000000000000000001111 = 15 (osnovica 10)
3. Bitwise XOR
Ovo je binarni operator označen simbolom caret "^" koji izvodi operaciju XOR na uzastopnom paru odgovarajućih bita svojih argumenata. Operator "^" vraća 0 ako su oba bita ista (tj. Oba su 1 ili su oba 0), vratiće 1.
x | Y | X Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Primjer
10 (baza 10) = 00000000000000000000000000001010
13 (baza 10) = 00000000000000000000000000001101
----------------------------
10 13 00000000000000000000000000000111 = 7 (baza 10)
4. Bitwise NOT
Ovo je jedanrski operator označen simbolom tilde „~“ koji izvodi operaciju NOT na odgovarajućim bitovima svog argumenta. Operater "~" bi preokrenuo bitove operanda, tj. Pretvorio 0 u 1 ili 1 u 0.
x | X- |
0 | 1 |
1 | 0 |
Primjer
10 (baza 10) = 00000000000000000000000000001010
----------------------------
~ 10 11111111111111111111111111110101
Operatori pomaka pomaka u JavaScript-u
U operaciji pomaka u pomacima također se uzimaju dva argumenta, gdje je prvi argument binarni broj na kojem će se izvesti operacija promjene, a drugi argument određuje broj bita po kojima se prvi argument mora pomaknuti. Operator koji se koristi određuje smjer rada smjene u binarnom broju.
1. Bitwise Left Shift
Ovo je binarni operator označen simbolom "<<". Ovaj operator će pomaknuti krajnje desne bitove prvog argumenta u lijevu vrijednost vrijednosti drugog argumenta. Bitovi pomaknuti udesno zamjenjuju se sa 0 u gornjem desnom dijelu za svaku izvedenu operaciju promjene.
Primjer: 8 << 3 prinosa 64
8 (baza 10) = 00000000000000000000000000001000
----------------------------
8 << 3 00000000000000000000000001000000 = 64 (baza 10)
2. Pomicanje u desno
Ovo je binarni operator označen simbolom ">>>". Ovaj operator će pomaknuti krajnje desne bitove prvog argumenta u njihovo pravo za vrijednost vrijednosti drugog argumenta. Bitovi pomaknuti s lijeve strane zamjenjuju se sa 0 u krajnjem lijevom dijelu za svaku izvedenu operaciju promjene.
Primjer: 8 >>> 3 prinosa 1
8 (baza 10) = 00000000000000000000000000001000
----------------------------
8 >>> 3 00000000000000000000000000000001 = 1 (baza 10)
-8 (baza 10) = 11111111111111111111111111111000
----------------------------
-8 >>> 3 00011111111111111111111111111111 = 536870911 (baza 10)
3. Bitwise Sign Right Propagating Right Shift
Ovo je binarni operator označen simbolom ">>". Ovaj operator će pomaknuti krajnje desne bitove prvog argumenta u njihovo pravo za vrijednost vrijednosti drugog argumenta. Bitovi pomaknuti s lijeve strane zamjenjuju se krajnjim lijevim bitom (tj. Bitnim znakom) u krajnjem lijevom dijelu za svaku izvedenu operaciju promjene.
Primjer: 8 >>> 3 prinosa 1
8 (baza 10) = 00000000000000000000000000001000
----------------------------
8 >> 3 00000000000000000000000000000001 = 1 (baza 10)
-8 (baza 10) = 11111111111111111111111111111000
----------------------------
-8 >> 3 11111111111111111111111111111111 = -1 (baza 10)
Zaključak
Argumenti se pretvaraju u 32-bitna binarna broja i izražavaju u obliku bitova (tj. 0 i 1). Brojevi u argumentima koji rezultiraju s više od 32 bita odbacuju svoje msb-ove (najznačajniji bit). Isto se pravilo primjenjuje kada se tijekom rada smjene odbaci lijevi bit, tada se odvoje dodatni bitovi na msb, a tijekom desnog pomaka, dodatni bit koji raste u gornjem desnom dijelu se odbacuje.
Prije: 110011010100011101001000100000001110010010001
----------------------------
Nakon: 11101001000100000001110010010001
Svaki odgovarajući bit je uparen jedan s drugim, tj. Prvi bit s prvim bitom ostalih argumenata, drugi bit s drugim bitom i tako dalje.
Operator se primjenjuje na svaki bit (za binarni operator to bi trebao biti par bitova), otuda se nazivaju bitovni operatori u JavaScript-u.
Praktična primjena bitnog operatora su Bit zastavice, komunikacija preko utičnice / portova, kompresija, šifriranje, konačni strojevi, grafika itd.
Preporučeni članci
Ovo je vodič za Bitwise Operatere u JavaScript-u. Ovdje ćemo raspravljati o uvođenju, vrstama bitnih operatora u JavaScript-u, kao što su logički i pomični operatori zajedno s njegovim operacijama. Možete pogledati i sljedeće članke da biste saznali više -
- Kompajleri JavaScripta
- Preokrenuti u JavaScript
- Za petlju u JavaScript-u
- Uvod u JavaScript