Bevezetés a bitmanipulációba

A programozók általában olyan adattípusokon működnek, mint például int, float, dupla, String vagy olyan gyűjtemények, mint Array, List, ArrayList és így tovább. Bizonyos esetekben a programozóknak sokkal mélyebbre kell menniük az adatokban byte-on és bit-szinten az adatok kinyeréséhez és manipulálásához. Az olyan nyelvek, mint a Java és a C # lehetővé teszik az adatok manipulálását bitszinten, ami azt jelenti, hogy bájtban hozzáférhet egy adott bithez. Ebben a témában megismerjük a Java manipulációját.

A bitmanipulációra gyakran szükség van, amikor az adatkompresszióval és az adattitkosítással foglalkoznak, ahol a programozónak az eredeti adatok kódolása, dekódolása vagy tömörítése céljából bitszinten kell adatokat kivonnia. A Bit manipulációnak sok más alkalmazása is létezik, amelyeket később megnézünk a cikkben.

A Java támogatja a 3 bites műszakos és 4 bites műveleteket a műveletek bitszinten történő végrehajtásához. Ezek az operátorok integrált típusokon (int, rövid, hosszú és byte) használhatók bitszintű műveletek végrehajtására.

Java Bitwise és Bitshift operátorok

OperátorLeírás
&Bitálisan ÉS
|Bittenként VAGY
~Bitális kiegészítés
<<Bal Shift
>>Jobbra váltás
^Bitálisan XOR
>>>Aláírás nélküli jobbra váltás

A bitmanipuláció operátorai Java-ban

nézzük részletesebben az operátorokat

1) Bittenként VAGY

Ez egy bináris operátor, amely 2 operandust vesz fel és a „|” szimbólummal van jelölve „. A bitmennyiségű operátor összehasonlítja a két operandus megfelelő bitjét. Ha az operandus bit valamelyike ​​1, akkor a kimenet 1, ha nem, akkor 0 lesz.

Példa

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

Java program

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

Teljesítmény: 31

2) Bittenként ÉS

Ez szintén bitutas operátor, amely 2 operandust vesz fel és „&” szimbólummal jelöl. a bitmennyiségű operátor összehasonlítja a két operandus megfelelő bitjét. Ha mindkét operandus bit 1, akkor a kimenet 1, egyébként 0.

Példa

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

Java program

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

Teljesítmény: 11

3) Bitális kiegészítés

A másik két operátorral ellentétben, amelyről eddig tárgyaltunk, ez csak egy operandust vesz igénybe, és a „~” szimbólummal van jelölve. Ez az operátor megfordítja az operandus bitjét. Ha az operandus bit 0, akkor azt 1-re konvertálja és fordítva.

Példa

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

Java program

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

Teljesítmény: -16

Megjegyzés: a Java program futtatásakor a kimeneti eredmény helyett -16 lesz, a 240 helyett, mert a fordító azt mutatja, hogy a kettő kiegészíti ezt a számot, azaz a bináris szám negatív elképzelését.

Bármely szám 2-kiegészítése egyenértékű - (n + 1) -vel, ahol n az a szám, amelynek 2-komplementumát ki kell számítani. Esetünkben a 15 operandus 2 komplementer -16, amely szintén a program kimenete.

4) Bitkor XOR

A Bitwise XOR egy bináris operátor, amely 2 operandust vesz fel, és „^” szimbólummal van jelölve. ez az operátor összehasonlítja a két operandus megfelelő bitjét. Ha a két operandus megfelelő bitjei különböznek, akkor 1-et ad ki, mint egyéb kimenetet.

A Bitwise XOR operátor egyenértékű a (Bitwise OR + Bitwise Complement)

Példa

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

Java program

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

Teljesítmény: 20

5) Aláírt váltás balra

A bal oldali váltás bittenként a bitmintát balra tolja el az operandusban megadott bizonyos számú alkalommal. A bal oldali váltóművet „<<” szimbólum jelöli.

Példa

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 program

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

output: 246, 492, 984

6) Aláírt jobbra váltás

Az aláírt jobb oldali váltókezelő pontosan ugyanúgy működik, mint a bal oldali műszakkezelő, csak annyit tesz, hogy nulla bittel növeli a magas rendű pozíciót.

Példa

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 program

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

Teljesítmény: 61, 30, 15

7) Aláírás nélküli jobbra váltás

A jobb oldali sebességű operátor az operandusban megadott bizonyos számú bittel nullát mozgat a bal legszélső helyzetbe.

Java program

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

Teljesítmény : 61, 30, 15

Következtetés - Bitmanipuláció Java-ban

Most, hogy elértük a cikk végét, foglalkozzunk azzal, hogy összefoglaljuk a kulcsfontosságú pontot, amelyet ebben a cikkben tárgyaltunk. Láttuk, hogy mi a kis manipuláció, és azok különféle felhasználási esetei. Megtanultuk a különféle bit bit operátorokat is (Bitwise AND, Bitwise OR, Bitwise Complement and Bitwise XOR) and bit shift operátorokat (Signed Bal Shift operátor, Signed Jobb váltó operátor és Signed Jobb váltó operátorok), valamint példát és mintát Az egyes operátorokat magyarázó Java program.

Ajánlott cikkek

Ez egy útmutató a Bit-manipulációhoz Java-ban. Itt részletesen tárgyaljuk a Java Bitwise és a Bitshift operátorokat, példákat, Java programokat és azok kimenetet. A következő cikkben további információkat is megnézhet -

  1. Mi a Java interfész?
  2. Java eszközök
  3. Python keretek
  4. Logikai operátorok Java-ban

Kategória: