Sissejuhatus bitmanipulatsiooni

Tavaliselt töötab programmeerija selliste andmetüüpide muutujatega nagu int, float, double, String või selliste kogudega nagu Array, List, ArrayList ja nii edasi. Mõnel juhul peavad programmeerijad andmete eraldamiseks ja nendega manipuleerimiseks minema palju sügavamale baiti ja biti tasemel olevatesse andmetesse. Sellised keeled nagu Java ja C # võimaldavad teil manipuleerida andmetega bititasandil, mis tähendab, et teil on juurdepääs kindlale bitile baiti. Selles teemas õpime tundma Java manipuleerimist bitiga.

Biti manipuleerimine on sageli vajalik andmete pakkimise ja andmete krüptimisega töötamisel, kus programmeerijal on vaja algsete andmete kodeerimiseks, dekodeerimiseks või tihendamiseks andmeid eraldada bititasemel. Biti manipuleerimise jaoks on palju muid rakendusi, mida näeme selles artiklis hiljem.

Java toetab biti tasemel toimingute tegemiseks 3-bitist nihet ja 4 bitti operaatorit. Neid operaatoreid saab kasutada integraaltüüpidel (int, lühike, pikk ja bait), et toiminguid bititasandil teostada.

Java Bitwise ja Bitshift operaatorid

OperaatorKirjeldus
&Bitwise JA
|Bitwise VÕI
~Bitwise täiendus
<<Vasak Shift
>>Parem vahetus
^Bitwise XOR
>>>Allkirjastamata parempoolne vahetus

Java-vormingus bitimanipulatsiooni operaatorid

vaatame operaatoreid üksikasjalikumalt

1) bittiliselt VÕI

See on binaarne operaator, mis võtab 2 operandit ja mida tähistatakse sümboliga “| “. Bituaarne operaator võrdleb kahe operandi vastavaid bitte. Kui mõni operandibit on 1, siis väljund on 1, kui mitte, siis on see 0.

Näide

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

Java programm

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

Väljund: 31

2) bittiliselt JA

See on ka bittide operaator, mis võtab 2 operandit ja mida tähistatakse sümboliga “&”. bitikiirusega operaator võrdleb kahe operandi vastavaid bitte. Kui mõlemad operandi bitid on 1, siis on väljund 1, vastasel juhul 0.

Näide

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

Java programm

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

Väljund: 11

3) Bitwise täiendus

Erinevalt kahest muust operaatorist, kellest me seni arutanud oleme, võtab see ainult ühe operandi ja on tähistatud sümboliga “~”. See operaator pöörab operandi bitti ümber. Kui operandibit on 0, teisendab see selle väärtuseks 1 ja vastupidi.

Näide

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

Java programm

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

Väljund: -16

Märkus: Java programmi käivitamisel saate väljundina 240 asemel -16, kuna kompilaator näitab selle numbri 2 komplementaare, st kahendarvu negatiivset ettekujutust.

Mistahes arvu 2 komplement on võrdne - (n + 1), kus n on arv, mille 2 komplement arvutatakse. Meie puhul on operandi 15 2 komplement -16, mis on ka programmi väljund.

4) Bitwise XOR

Bitwise XOR on binaarne operaator, mis võtab 2 operandit ja tähistab sümboliga “^”. see operaator võrdleb kahe operandi vastavaid bitte. Kui kahe operandi vastavad bitid on erinevad, annab see väljundina 1 muu 0.

Bitwise XOR operaator on samaväärne (Bitwise OR + Bitwise Complement)

Näide

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

Java programm

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

Väljund: 20

5) allkirjastatud vasakpoolne vahetus

Vasakpoolne nihe bittide kaupa nihutab bitti mustrit vasakule teatud arvu kordi, mis on määratud operandis. Vasakpoolse vahetuse operaatorit tähistatakse sümboliga <<<.

Näide

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 programm

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

väljund: 246, 492, 984

6) allkirjastatud parempoolne vahetus

Allkirjastatud parempoolse käigu operaator töötab täpselt samamoodi nagu vasakpoolne vahetustega operaator, vaid see, et see lisab nullbitti, nihutatakse kõrge järjekorda.

Näide

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 programm

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

Väljund: 61, 30, 15

7) Allkirjastamata parempoolne nihutamine

Parempoolse nihkega operaator nihutab operandis määratud bittide arvu nulli vasakpoolsemasse asendisse.

Java programm

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

Väljund : 61, 30, 15

Järeldus - biti manipuleerimine Java-s

Nüüd, kui oleme jõudnud artikli lõppu, teeme kokkuvõtte, võttes kokku põhipunkti, mida selles artiklis oleme arutanud. Oleme näinud, mis on natuke manipuleerimine ja selle erinevad kasutusjuhud. Oleme õppinud ka erinevat tüüpi bittiliselt operaatoreid (bitiselt JA, bittiliselt VÕI, bitiliselt komplementaarselt ja bitwise XOR-i) ja bittide vahetuse operaatoreid (allkirjastatud vasakule nihutamise operaator, allkirjastatud parempoolse käigu operaator ja allkirjastamata paremale nihutamise operaatorid) koos näite ja näidisega Java-programm, mis selgitab üksikuid operaatoreid.

Soovitatavad artiklid

See on Java-tüüpi bitimanipulatsiooni juhend. Siin käsitleme üksikasjalikult Java Bitwise ja Bitshift operaatoreid koos näidete ja Java programmidega ning nende väljundiga. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Mis on Java liides?
  2. Java tööriistad
  3. Pythoni raamid
  4. Boole'i ​​operaatorid Java-s

Kategooria: