Johdatus bitin manipulointiin

Yleensä ohjelmoija työskentelee tietotyyppien muuttujien, kuten int, float, double, String tai kokoelmien, kuten Array, List, ArrayList ja niin edelleen. Joissain tapauksissa ohjelmoijien on mentävä paljon syvemmälle tietoihin tavu- ja bittitasolla datan purkamiseksi ja käsittelemiseksi. Kielet, kuten Java ja C #, antavat sinun manipuloida dataa bittitasolla, mikä tarkoittaa, että sinulla on pääsy tiettyyn bittiin tavussa. Tässä aiheessa aiomme oppia Java-bittin manipuloinnista.

Bittimanipulaatiota vaaditaan usein työskennellessään tietojen pakkaamiseen ja tietojen salaamiseen, missä ohjelmoijan on poistettava tietoja bittitasolla alkuperäisen tiedon koodaamiseksi, dekoodaamiseksi tai pakkaamiseksi. Bittien käsittelyssä on monia muita sovelluksia, joita näemme myöhemmin tässä artikkelissa.

Java tukee 3-bittistä siirtymää ja 4 bittivälistä operaattoria toimintojen suorittamiseksi bittitasolla. Näitä operaattoreita voidaan käyttää integraalityypeissä (int, lyhyt, pitkä ja tavu) toimintojen suorittamiseen bittitasolla.

Java Bitwise- ja Bitshift -operaattorit

operaattoriKuvaus
&Bittisesti JA
|Bittaisesti TAI
~Bittisesti täydentävä
<<Vasen vaihtonäppäin
>>Oikea vaihto
^Bittaisesti XOR
>>>Allekirjoittamaton oikea vaihto

Operaattorit Java-bittien käsittelyyn

Katsotaanpa tarkemmin operaattoreita

1) Bittaisesti TAI

Tämä on binaarioperaattori, joka ottaa 2 operandia ja merkitty symbolilla “| ”. Bittisoperaattori vertaa kahden operandin vastaavia bittejä. Jos jokin operandibitti on 1, niin lähtö on 1, ellei, se on 0.

esimerkki

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Java-ohjelma

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Tuotos: 31

2) bittisesti AND

Tämä on myös bittisuoritusoperaattori, joka ottaa 2 operandia ja merkitty symbolilla “&”. bittitasolla operaattori vertaa kahden operandin vastaavia bittejä. Jos molemmat operandbitit ovat 1, niin lähtö on 1, muuten 0.

esimerkki

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Java-ohjelma

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Lähtö: 11

3) Bittisesti täydentävä

Toisin kuin kaksi muuta operaattoria, joista olemme keskustelleet tähän mennessä, tämä vie vain yhden operandin ja on merkitty symbolilla “~”. Tämä operaattori kääntää operandin bitin. Jos operandibitti on 0, niin se muuntaa sen 1: ksi ja päinvastoin.

esimerkki

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Java-ohjelma

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Lähtö: -16

Huomaa: Kun suoritat Java-ohjelmaa, tulosteena saadaan -16 240: n sijasta, koska kääntäjä näyttää 2: n komplementaation numerosta eli negatiivisen käsityksen binaariluvusta.

Minkä tahansa luvun 2 komplementti vastaa - (n + 1), missä n on luku, jonka 2 komplementti on tarkoitus laskea. Tapauksessamme 2-operandin 15 komplementti on -16, joka on myös ohjelman lähtö.

4) bittiä kohti XOR

Bitwise XOR on binaarioperaattori, joka ottaa 2 operandia ja on merkitty symbolilla ”^”. tämä operaattori vertaa kahden operandin vastaavia bittejä. Jos kahden operandin vastaavat bitit ovat erilaiset, se antaa 1 ulostulona 0.

Bittisesti XOR-operaattori vastaa (bittisesti tai + bittisesti täydentävä)

esimerkki

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Java-ohjelma

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Lähtö: 20

5) Allekirjoitettu vasen vaihto

Vasemman siirteen bittisuunnassa operaattori siirtää bittikuviota vasemmalle tietyn määrän operandissa määritettyjä kertoja. Vasen vuoronoperaattori on merkitty symbolilla “<<”.

esimerkki

123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)

Java-ohjelma

class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)

lähtö: 246, 492, 984

6) Allekirjoitettu oikeanpuoleinen vaihto

Allekirjoitettu oikeanpuoleinen vaihtooperaattori toimii täsmälleen samalla tavalla kuin vasensiirto-operaattori vain, että se lisää nollabittiä siirretään korkean tilauksen asentoon.

esimerkki

123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)

Java-ohjelma

class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)

Tulos: 61, 30, 15

7) Allekirjoittamaton oikea vaihto

Oikeanpuoleinen vaihtooperaattori siirtyy nollaan vasempaan asentoon tietyn määrän operandissa määritettyjä bittejä.

Java-ohjelma

class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)

Tulos : 61, 30, 15

Johtopäätös - Bittien manipulointi Java: lla

Nyt kun olemme päässeet artikkelin loppuun, kääritään yhteenvedolla keskeisestä kohdasta, josta olemme keskustelleet tässä artikkelissa. Olemme nähneet, mikä on vähän manipulointi ja sen erilaiset käyttötapaukset. Olemme myös oppineet erityyppiset bittioperaattorit (bitti- ja bittisuuntainen OR, bittisuuntainen komplementti ja bitwise XOR) ja bittivirheoperaattorit (allekirjoitettu vasemmanpuoleinen vaihtooperaattori, allekirjoitettu oikeanpuoleinen vaihtooperaattori ja allekirjoittamaton oikeanpuoleinen vaihtooperaattorit) sekä esimerkki ja näyte Java-ohjelma selittää yksittäisiä operaattoreita.

Suositellut artikkelit

Tämä on opas Java-bittin manipulointiin. Tässä keskustellaan yksityiskohtaisesti Java Bitwise- ja Bitshift-operaattoreista esimerkkien, Java-ohjelmien ja niiden tuotoksen kanssa. Voit myös tarkastella seuraavaa artikkelia saadaksesi lisätietoja -

  1. Mikä on Java-käyttöliittymä?
  2. Java-työkalut
  3. Python-kehykset
  4. Boolen operaattorit Java-järjestelmässä