Uvod u manipulaciju bitima

Obično programer radi na varijablama vrsta podataka kao što su int, float, double, String ili zbirke poput Array, List, ArrayList i tako dalje. U nekim slučajevima, programeri moraju ući mnogo dublje u podatke na bajtu i na razini bita kako bi izvukli i manipulirali podacima. Jezici kao što su Java i C # omogućuju vam manipuliranje podacima na razini bita, što znači da imate pristup određenom bitu u bajtu. U ovoj ćemo temi naučiti o Manipulaciji Bit-a na Javi.

Manipulacija bita često se zahtijeva pri radu na Kompresiji podataka i Šifriranju podataka gdje programer mora izvući podatke na razini bita kako bi kodirao, dekodirao ili komprimirao izvorne podatke. Postoje mnoge druge aplikacije Bit manipulacije koje ćemo vidjeti kasnije u ovom članku.

Java podržava 3-bitni pomak i 4 bitna operatera za izvođenje operacija na razini bita. Ovi se operateri mogu koristiti na integralnim tipovima (int, short, long i byte) za izvođenje operacija na razini bita.

Operatori Java Bitwise i Bitshift

OperaterOpis
&Bitwise I
|Bitno ILI
~Bitni dodatak
<<Lijeva smjena
>>Desna smjena
^Bitno XOR
>>>Nepodpisan desni pomak

Operatori manipulacije bitima na Javi

pogledajmo operatore detaljnije

1) Bitno ILI

Ovo je binarni operator koji uzima 2 operanda i označen je simbolom "| „. Operator bitisa uspoređuje odgovarajuće bitove dvaju operanda. Ako je bilo koji od operandova bita 1, tada je izlaz 1, ako ne, bit će 0.

Primjer

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

Izlaz: 31

2) Bitwise I

Ovo je također bitni operator koji uzima 2 operanda i označen je simbolom “&”. operater bitova uspoređuje odgovarajuće bitove dvaju operanda. Ako su oba boda operenda 1, tada je izlaz 1, a 0.

Primjer

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

Izlaz: 11

3) Bitni dopuna

Za razliku od druga dva operatora o kojima smo do sada razgovarali, ovaj ima samo jedan operand i označen je simbolom "~". Ovaj operator invertira bit operanda. Ako je bit operanda 0, tada ga pretvara u 1 i obrnuto.

Primjer

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

Izlaz: -16

Napomena: kada pokrenete program Java, dobit ćete -16 kao izlaz umjesto 240, jer prevoditelj prikazuje 2 komplementa tog broja, tj. Negativan pojam binarnog broja.

2 dopunjavanje bilo kojeg broja ekvivalentno je - (n + 1) gdje je n broj čigava 2 komplementa treba izračunati. U našem slučaju 2 komplementa operanda 15 je -16 što je i izlaz programa.

4) Bitwise XOR

Bitwise XOR je binarni operator koji uzima 2 operanda i označava se simbolom "^". ovaj operator uspoređuje odgovarajuće bitove dvaju operanda. Ako su odgovarajući bitovi dvaju operanda različiti, on daje 1 kao izlaz ostatak 0.

Bitwise XOR operator je ekvivalentan (Bitwise OR + Bitwise Complement)

Primjer

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

Izlaz: 20

5) Potpisan pomak lijevo

Lijevi operator pomaka po pomaku pomiče uzorak bita ulijevo za određeni broj puta navedenih u operandu. Lijevi operator pomicanja označen je simbolom "<<".

Primjer

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

izlaz: 246, 492, 984

6) Potpisan pomak desno

Potpisani operator desne promjene djeluje potpuno isto kao i operator lijeve smjene samo što dodaje nula bita pomaknuto je u položaj visokog reda.

Primjer

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

Izlaz: 61, 30, 15

7) Nepodpisan desni pomak

Operater desnog pomaka pomiče nulu u krajnji lijevi položaj za određeni broj bitova navedenih u operandu.

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

Izlaz : 61, 30, 15

Zaključak - Manipulacija bitima na Javi

Sada kada smo stigli do kraja članka, završimo sažeto rezimirajući ključnu točku o kojoj smo razgovarali u ovom članku. Vidjeli smo što je pomalo manipulacija i njezini različiti slučajevi upotrebe. Također smo naučili različite tipove bitnostranih operatora (Bitwise AND, Bitwise ILO, Bitwise Complement i Bitwise XOR) i operatera pomaka u bitni (Signed Left Shift operator, potpisan Right Shift Operator i nepotpisani Right shift operateri), uz primjer i uzorak Java program koji objašnjava pojedine operatore.

Preporučeni članci

Ovo je vodič za manipulaciju bitima na Javi. Ovdje detaljno raspravljamo o Javnim bitnim i Bitshift operaterima s primjerima i Java programima i njihovim izlazima. Možete pogledati i sljedeći članak da biste saznali više -

  1. Što je Java sučelje?
  2. Java alati
  3. Okviri Python-a
  4. Booleovi operateri na Javi

Kategorija: