Uvod v manipulacijo z bitji

Ponavadi programer deluje na spremenljivkah podatkovnih vrst, kot so int, float, double, String ali zbirke, kot so Array, List, ArrayList in tako naprej. V nekaterih primerih morajo programerji iti veliko globlje v podatke v bajtu in na bitni ravni, da podatke pridobijo in manipulirajo. Jezika, kot sta Java in C #, omogočata manipulacijo s podatki na ravni bitov, kar pomeni, da imate dostop do določenega bita v bajtu. V tej temi bomo spoznali Manipulacijo Bit na Javi.

Manipulacija bitov je pogosto potrebna pri delu na stiskanju podatkov in šifriranju podatkov, kjer mora programer izvleči podatke na ravni bitov, da kodira, dekodira ali stisne izvirne podatke. Obstaja še veliko drugih aplikacij Bit manipulacije, ki jih bomo videli kasneje v tem članku.

Java podpira 3-bitne premike in 4 bitne operaterje za izvajanje operacij na bitni ravni. Te operaterje lahko uporabljate na integralnih tipih (int, kratka, dolga in bajtna) za izvajanje operacij na bitni ravni.

Java Bitwise in Bitshift operaterji

OperaterOpis
&Bitwise IN
|Bitno ALI
~Bitno dopolnilo
<<Levi shift
>>Desni premik
^Bitwise XOR
>>>Nepodpisan desni premik

Izvajalci manipulacije Bit na Javi

poglejmo si operaterje podrobneje

1) Pokončno ALI

To je binarni operater, ki sprejme 2 operanda in označen s simbolom „| ". Bitni operater primerja ustrezne bite obeh operandov. Če je kateri koli od operandnih bitov 1, potem je izhod 1, če ni, bo 0.

Primer

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

Program Java

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

Izhod: 31

2) Pokončno IN

To je tudi bitni operater, ki sprejme 2 operanda in označen s simbolom "&". bitni operater primerja ustrezne bite obeh operandov. Če sta oba operna bita 1, je izhod 1 drugače 0.

Primer

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

Program Java

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

Izhod: 11

3) Bitno dopolnilo

Za razliko od drugih dveh operaterjev, o katerih smo doslej razpravljali, ima ta samo en operand in označen s simbolom "~". Ta operater obrne bit operanda. Če je bit operanda 0, ga pretvori v 1 in obratno.

Primer

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

Program Java

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

Izhod: -16

Opomba: ko zaženete program Java, boste dobili -16 kot izhod namesto 240, ker prevajalnik pokaže 2, ki dopolnjuje to številko, tj. Negativni pojem dvojiške številke.

2 dopolnilo katerega koli števila je enako - (n + 1), kjer je n število, katerega 2 dopolnilo je treba izračunati. V našem primeru je 2 dopolnilo operanda 15 -16, kar je tudi rezultat programa.

4) Pokončno XOR

Bitwise XOR je binarni operater, ki sprejme 2 operanda in označuje s simbolom "^". ta operater primerja ustrezne bite obeh operandov. Če sta ustrezna bita obeh operandov drugačna, daje 1 kot izhod 0.

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

Primer

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

Program Java

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

Izhod: 20

5) Podpisan levi premik

Levi premik po smeri prenosa premakne bitni vzorec v levo za določeno število krat, določenih v operandu. Levi pomični operator je označen s simbolom "<<".

Primer

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)

Program Java

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

izhod: 246, 492, 984

6) Podpisan desni premik

Podpisani operater desne premike deluje popolnoma enako kot operater leve premike le, če doda nič bitov, se premakne na položaj visokega reda.

Primer

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)

Program Java

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

Izhod: 61, 30, 15

7) Nepodpisan desni premik

Operater desnega premika premakne ničlo v skrajni levi položaj za določeno število bitov, ki jih poda operand.

Program Java

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

Izhod : 61, 30, 15

Zaključek - Manipulacija bitja na Javi

Zdaj, ko smo prišli do konca članka, zaključimo s povzetkom ključne točke, o kateri smo govorili v tem članku. Videli smo, kaj je malce manipulacija in njene različne primere uporabe. Izvedeli smo tudi različne vrste bitnih operaterjev (Bitwise AND, Bitwise OR, Bitwise Complement in Bitwise XOR) in operaterje premikov bit (Signed Left Shift operator, podpisan Right Shift Operator in unsigned Right shift operaterji), skupaj s primerom in vzorcem Program Java, ki razlaga posamezne operaterje.

Priporočeni članki

To je vodnik za manipulacijo z bitji na Javi. Tukaj podrobno razpravljamo o operaterjih Java Bitwise in Bitshift s primeri in programih Java ter njenem izhodu. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. Kaj je vmesnik Java?
  2. Java Orodja
  3. Okviri Python
  4. Boolov operaterji na Javi