Javassa an operaattori on symboli, joka suorittaa määritetyt toiminnot. Tässä osiossa käsittelemme vain bittikohtainen operaattori ja sen tyypit oikeilla esimerkeillä.
Bitwise-operaattorityypit
Javalla on kuuden tyyppistä bittikohtaista operaattoria:
- Bitittain JA
- Bittikohtaisesti yksinomainen TAI
- Bittikohtainen TAI
- Bitittainen kohteliaisuus
- Bit Shift -operaattorit
Operaattorit | Symboli | Käyttää |
---|---|---|
Bitittain JA | & | op1 ja op2 |
Bittikohtaisesti yksinomainen TAI | ^ | op1 ^ op2 |
Bittikohtainen TAI | | | op1 | op2 |
Bitittainen kohteliaisuus | ~ | ~ op |
Bittisuuntainen siirto vasemmalle | << | op1 << op2 |
Bittisuuntainen siirto oikealle | >> | op1 >> op2 |
Allekirjoittamaton oikean vuoron kuljettaja | >>> osoitteessa >>> | vaihtopaikkojen määrä |
Selitätään bittikohtainen operaattori yksityiskohtaisesti.
Bittikohtainen JA (&)
Se on binäärioperaattori, joka on merkitty symbolilla & . Se palauttaa 1, jos ja vain jos molemmat bitit ovat 1, muussa tapauksessa palauttaa 0.
Käytetään Java-ohjelmassa bittikohtaista AND-operaattoria.
se on
BitwiseAndExample.java
public class BitwiseAndExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise and // 1001 & 1000 = 1000 = 8 System.out.println('x & y = ' + (x & y)); } }
Lähtö
x & y = 8
Bittikohtaisesti poissulkeva TAI (^)
Se on binäärioperaattori, joka on merkitty symbolilla ^ (lausutaan caret). Se palauttaa 0, jos molemmat bitit ovat samat, muussa tapauksessa palauttaa 1.
Käytetään bittikohtaista poissulkevaa OR-operaattoria Java-ohjelmassa.
BitwiseXorExample.java
public class BitwiseXorExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise XOR // 1001 ^ 1000 = 0001 = 1 System.out.println('x ^ y = ' + (x ^ y)); } }
Lähtö
x ^ y = 1
Bittikohtainen TAI (|)
Se on binäärioperaattori, joka on merkitty symbolilla | (lausutaan piippuksi). Se palauttaa 1, jos jompikumpi bitistä on 1, muussa tapauksessa palauttaa 0.
Käytetään Java-ohjelmassa bittikohtaista inklusiivista OR-operaattoria.
BitwiseInclusiveOrExample.java
public class BitwiseInclusiveOrExample { public static void main(String[] args) y = ' + (x }
Lähtö
x | y = 9
Bitittainen täydennys (~)
Se on unaarinen operaattori, joka on merkitty symbolilla ~ (lausutaan tildeksi). Se palauttaa bitin käänteisen tai komplementin. Se tekee joka 0:sta 1:stä ja joka 1:stä 0:n.
kuinka muuntaa merkkijono int javaksi
Käytetään bittikohtaista komplementtioperaattoria Java-ohjelmassa.
BitwiseComplimentExample.java
public class BitwiseComplimentExample { public static void main(String[] args) { int x = 2; // bitwise compliment // ~0010= 1101 = -3 System.out.println('~x = ' + (~x)); } }
Lähtö
~x = -3
Bit Shift -operaattorit
Shift-operaattoria käytetään bittien siirtämiseen joko oikealle tai vasemmalle. Voimme käyttää siirtooperaattoreita, jos jaamme tai kerromme minkä tahansa luvun kahdella. Yleinen muoto bitin siirtämiseksi on seuraava:
variable <> number of places to shift;
Esimerkiksi jos a=10
a>>2; //shifts two bits a>>4; //shifts 4 bits
Java tarjoaa seuraavan tyyppisiä vaihtooperaattoreita:
- Allekirjoitettu oikea vuorooperaattori tai bittisuuntainen oikea vuorooperaattori
- Allekirjoittamaton oikean vuoron kuljettaja
- Allekirjoitettu vasen vuorooperaattori tai bittisuuntainen vasen vuorooperaattori
Huomautus: Java ei tue allekirjoittamatonta vasen vaihtooperaattoria (<<<).< h4> Allekirjoitettu oikea vuoronkuljettaja (>>)
Merkitty oikealle siirtooperaattori siirtää luvun bittikuviota kohti oikein tietyllä määrällä paikkoja ja täyttää 0. Operaattori on merkitty symbolilla >>. Se säilyttää myös vasemmanpuoleisen bitin (merkkibitin). Jos 0 on esitetty vasemmanpuoleisimman bitin kohdalla, se tarkoittaa, että numero on positiivinen . Jos 1 on esitetty vasemmanpuoleisimman bitin kohdalla, se tarkoittaa, että numero on negatiivinen .
Yleisesti ottaen, jos kirjoitamme a>>n, se tarkoittaa luvun bittien siirtämistä oikealle tietyllä sijainnilla (n). Matematiikan termeissä voimme edustaa etumerkittyä oikealle siirtooperaattoria seuraavasti:
Huomaa: Kun käytämme oikealle siirtooperaattoria positiiviseen lukuun, saamme myös positiivisen luvun tulokseen. Vastaavasti, kun käytämme oikealle siirtooperaattoria negatiiviseen lukuun, saamme myös negatiivisen luvun tulokseen.
Esimerkki: Käytä etumerkittyä oikealle siirtooperaattoria määritetyillä paikoilla 4, jos x = 256 ja x = -256.
Jos x = 256
256 >> 4
256/24= 16
Jos x = -256
-256 >> 4
mikä on hakemiston lähettäminen
-256/24= -16
Yllä olevassa esimerkissä olemme havainneet, että siirron jälkeen operaattori 256 muutettiin arvoksi 16 ja -256 muutettiin -16:ksi.
Luodaan Java-ohjelma ja toteutetaan vasen vaihtooperaattori.
SignedRightShiftOperatorExample.java
public class SignedRightShiftOperatorExample { public static void main(String args[]) { int x = 50; System.out.println('x>>2 = ' + (x >>2)); } }
Lähtö
x>>2 = 12
Allekirjoitettu vasen vuorooperaattori (<<)< strong> )<>
Allekirjoitettu vasemman vuoron operaattori (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>Se säilyttää myös vasemmanpuoleisen bitin (merkkibitin). Se ei säilytä merkkibittiä.)>
Yleensä, jos kirjoitamme < Esimerkki 1: Mikä on tulos a<:n siirron jälkeen<3. the value of a is 20.< strong> 3.> 20:n esitys binäärimuodossa on = 00010100 Vasemman vuorooperaattorin suorittamisen jälkeen saamme: a << 3 = 10100000 (kolme viimeistä bittiä ovat täytettyjä bittejä) a << 3 = 160 Tarkastetaan tulos kaavan avulla. 20 << 3 20*23= 20*8 = 160 Esimerkki 2: Mikä on tulos a<:n siirron jälkeen<2. the value of a is -10.< strong> 2.> Arvon -10 esitys binäärimuodossa on = 11110110 a<<2 11011000='<strong' =>-402> Tarkastetaan tulos kaavan avulla. -10 << 3 -10*22= -10*4 = -40 Luodaan Java-ohjelma ja toteutetaan allekirjoitettu vasen siirtooperaattori. SignedLeftShiftOperatorExample.java Lähtö java on tyhjä
public class SignedLeftShiftOperatorExample { public static void main(String args[]) { int x = 12; System.out.println('x<<1 = ' + (x << 1)); } < pre> <p> <strong>Output</strong> </p> <pre> x<<1 24 = < pre> <h3>Unsigned Right Shift Operator (>>>)</h3> <p>It shifts a zero at the leftmost position and fills 0. It is denoted by the symbol <strong>>>>.</strong> Note that the leftmost position after >> depends on the sign bit. It does not preserve the sign bit.</p> <p> <strong>Example: If a=11110000 and b=2, find a>>>b?</strong> </p> <p>a >>> b = 11110000 >>> 2 = <strong>00111100</strong> </p> <p>The left operand value is moved right by the number of bits specified by the right operand and the shifted bits are filled up with zeros. Excess bits shifted off to the right are discarded.</p> <p>Therefore, before shifting the bits the decimal value of a is 240, and after shifting the bits the decimal value of a is 60.</p> <p>Let's create a Java program and use the unsigned right shift operator.</p> <p> <strong>UnsignedRightShiftOperatorExample.java</strong> </p> <pre> public class UnsignedRightShiftOperatorExample { public static void main(String args[]) { int x = 20; System.out.println('x>>>2 = ' + (x >>>2)); } } </pre> <p> <strong>Output</strong> </p> <pre> x>>>2 = 5 </pre> <hr></1></pre></1>
x>>>2 = 5
1>1>