JavaScript Bitwise -operaattorit (esimerkkejä)

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 & 0on 0
0 1 0 & 1on 0
1 0 1 & 0on 0
1 1 1 & 1on 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 00000000000000000000000000001100ja 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 on00000000000000000000000000001100
  • Binaarinen arvo 25 on 00000000000000000000000000011001.
  • Kun suoritetaan bittinen JA- operaatio, binäärinen tulos on se, 00000000000000000000000000001000joka 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 | 0on 0
0 1 0 | 1on 1
1 0 1 | 0on 1
1 1 1 | 1on 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 00000000000000000000000000011101muuttuu 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 0on 0
0 1 0 1on 1
1 0 1 0on 1
1 1 1 1on 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 00000000000000000000000000010101muuttuu 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 11111111111111111111111111110011desimaaliksi 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.

Yksi bittinen vasen muutos JavaScriptissä

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.

Yksi bittinen oikea siirtymä merkkien etenemisellä täytä JavaScript

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.

Yksi bittinen oikea siirtymä ilman nollaa JavaScriptiä

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);

Mielenkiintoisia artikkeleita...