Tässä opetusohjelmassa opit JavaScriptin bittioperaattoreista ja sen tyypeistä esimerkkien avulla.
JavaScript Bitwise -operaattorit
Bittikohtaiset operaattorit käsittelevät sen operandeja 32-bittisten binaaristen numeroiden (nollien ja numeroiden) joukona ja suorittavat toimintoja. Tulos näytetään kuitenkin desimaalilukuna.
Operaattorit | Nimi | Esimerkki |
---|---|---|
& | Bittikohtaisesti JA | x & y |
| | Bittiä TAI | x | y |
^ | Bitteittäin XOR | x y |
~ | Bittikohtaisesti EI | ~x |
<< | Vasen vaihtonäppäin | x << y |
>> | Merkkiä levittävä oikea siirtymä | x>> y |
>>> | Nolla-täyttö oikealle | x>>> y |
Huomaa : Minimi- ja maksimilukemat, jotka voidaan edustaa 32-bittisellä allekirjoitetulla numerolla, ovat -2147483648 - 2147483647.
JavaScript bittikohtaisesti JA
Bittikohtaisesti AND &
palauttaa arvon 1, jos molempien operandien vastaavat bitit ovat 1 muuten, se palauttaa arvon 0 .
Operandi 1 | Operandi 2 | JA Käyttö |
---|---|---|
0 | 0 | 0 & 0 on 0 |
0 | 1 | 0 & 1 on 0 |
1 | 0 | 1 & 0 on 0 |
1 | 1 | 1 & 1 on 1 |
Katsotaanpa kahden kokonaisluvun 12 ja 25 bittikohtainen toiminta .
Binaarimuodossa 12 = 01100 25 = 11001 // 12: n ja 25: n bittiä ja operaatio 00001100 & 00011001 --------- 00001000 = 8 (desimaalina)
Huomaa : 12 : n muuntaminen 32-bittiseksi binaariseksi antaa meille 00000000000000000000000000001100
ja 25 antaa 00000000000000000000000000011001
. Olemme kuitenkin poistaneet edelliset nollat yksinkertaisuuden vuoksi.
Esimerkki 1: Bittiviiva ja operaattori
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
Yllä olevassa ohjelmassa
- Binaarinen arvo 12 on
00000000000000000000000000001100
- Binaarinen arvo 25 on
00000000000000000000000000011001
. - Kun suoritetaan bittinen JA- operaatio, binäärinen tulos on se,
00000000000000000000000000001000
joka muuntuu desimaaliarvoksi 8.
JavaScript Bitwise OR
Bitteittäin OR |
palauttaa arvon 1, jos yhden operandin jompikumpi vastaavista biteistä on 1, muuten palauttaa arvon 0 .
Operandi 1 | Operandi 2 | TAI käyttö |
---|---|---|
0 | 0 | 0 | 0 on 0 |
0 | 1 | 0 | 1 on 1 |
1 | 0 | 1 | 0 on 1 |
1 | 1 | 1 | 1 on 1 |
Katsotaanpa kahden kokonaisluvun 12 ja 25 bittikohtaista TAI-operaatiota .
Binaarimuodossa 12 = 01100 25 = 11001 // 12 tai 25: n bittiä kohti TAI operaatio 00001100 | 00011001 -------- 00011101 = 29 (desimaalilla)
Esimerkki 2: bittiä kohti TAI operaattori
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Kun suoritetaan bittikohtainen TAI- operaatio, binäärinen tulos 00000000000000000000000000011101
muuttuu desimaaliarvoksi 29.
JavaScript Bitwise XOR
Bittikohtaisesti XOR ^
palauttaa arvon 1, jos vastaavat bitit ovat erilaiset, ja palauttaa arvon 0, jos vastaavat bitit ovat samat.
Operandi 1 | Operandi 2 | XOR-käyttö |
---|---|---|
0 | 0 | 0 0 on 0 |
0 | 1 | 0 1 on 1 |
1 | 0 | 1 0 on 1 |
1 | 1 | 1 1 on 0 |
Binaarimuodossa 12 = 01100 25 = 11001 // 12: n ja 25: n bittinen XOR-operaatio 00001100 00011001 -------- 00010101 = 21 (desimaalina)
Esimerkki 3: XOR-operaattori bittikohtaisesti
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Kun suoritetaan bittikohtainen XOR- operaatio, binäärinen tulos 00000000000000000000000000010101
muuttuu desimaaliarvoksi 21.
JavaScript Bitwise EI
Biteittäin EI ~
kääntää bitti ( 0 muuttuu 1 , 1 tulee 0 ).
Binaarimuodossa 12 = 000000000000000000000000000000001100 // Ei bittinopeudella 12 ~ 00000000000000000000000000000000000000 -------------------------------- 1111111111111111111111111111110011 = -13 (desimaalilla)
Muunnettaessa 11111111111111111111111111110011
desimaaliksi arvo olisi 4294967283. Mutta kun käytetään bittioperaattoria, arvo lasketaan allekirjoitetun 2 täydennysmuodossa lukuun ottamatta nollatäytön oikeaa siirtymää.
2: n komplementti lasketaan kääntämällä bitit (1: n komplementti) ja lisäämällä sitten 1 . Esimerkiksi,
13 in binary: 00000000000000000000000000001101 1's complement of 13: 11111111111111111111111111110010 2's complement of 13: 11111111111111111111111111110010 +1 --------------------------------- 11111111111111111111111111110011
Notice the 2's complement of 13 (i.e. -13) is 11111111111111111111111111110011
. This value is equivalent to the bitwise NOT of 12.
Example 4: Bitwise NOT Operator
// bitwise NOT operator example let b = 12; result = ~b; console.log(result); // -13
When bitwise NOT operation is performed, the binary result will be 11111111111111111111111111110011
which converts into the decimal value -13.
Note: Bitwise NOT of a number x gives -(x + 1). Notice above ~2
gives -3.
JavaScript Left shift
Vasemman siirtymän operaattorissa <<
vasen operandi määrittää numeron ja oikea operandi määrittää vasemmalle siirrettävän numeron. Nollabitit lisätään oikealle ja ylimääräiset bitit vasemmalta hylätään.

Esimerkiksi,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
JavaScriptiä edistävä oikea siirtymä
Oikean siirtymän operaattorissa >>
ensimmäinen operandi määrittelee numeron ja toinen operandi määrittää oikealle siirrettävän numeron. Oikealta olevat ylimääräiset bitit heitetään pois. Vasemmanpuoleisen bitin kopioita siirretään vasemmalta, joten nimi etenee.

Esimerkiksi,
let a = 8; let b = 1; // 11111111111111111111111111111101 let c = -3; result = a>> b; result1 = c>> b; // 4 (00000000000000000000000000000100) console.log(result); // -1 (11111111111111111111111111111111) console.log(result1);
JavaScript Zero-fill right shift
Zero-fill right shift >>>
siirtää operandin oikealle täyttämällä nollabittiä vasemmalle. Oikealta olevat ylimääräiset bitit heitetään pois.

Esimerkiksi,
let a = 8; let b = 1; let c = -3; result = a>>> b; result1 = c>>> b; // 4 (00000000000000000000000000000100) console.log(result); // 1073741823 (00111111111111111111111111111111) console.log(result);