Wprowadzenie do manipulacji bitami

Zwykle programista pracuje na zmiennych typu danych, takich jak int, float, double, String lub kolekcjach takich jak Array, List, ArrayList i tak dalej. W niektórych przypadkach programiści muszą zagłębić się głębiej w dane na poziomie bajtów i bitów, aby wyodrębnić i zmanipulować dane. Języki takie jak Java i C # pozwalają manipulować danymi na poziomie bitów, co oznacza, że ​​masz dostęp do określonego bitu w bajcie. W tym temacie dowiemy się o manipulacji bitami w Javie.

Manipulacja bitami jest często wymagana podczas pracy z kompresją danych i szyfrowaniem danych, gdzie programista musi wyodrębnić dane na poziomie bitów, aby zakodować, zdekodować lub skompresować oryginalne dane. Istnieje wiele innych zastosowań manipulacji bitami, które zobaczymy w dalszej części tego artykułu.

Java obsługuje 3-bitowe przesunięcie i 4 bitowe operatory do wykonywania operacji na poziomie bitów. Operatory te mogą być używane w typach całkowych (int, krótki, długi i bajt) do wykonywania operacji na poziomie bitów.

Operatory bitowe i Bitshift Java

OperatorOpis
IBitowe AND
|Bitowe OR
~Uzupełnienie bitowe
<<Lewy Shift
>>Prawo Shift
^Bitowy XOR
>>>Unsigned Right Shift

Operatorzy manipulacji bitami w Javie

spójrzmy bardziej szczegółowo na operatorów

1) Bitowe LUB

Jest to operator binarny, który pobiera 2 operandy i jest oznaczony symbolem „| „. Bitowy operator porównuje odpowiednie bity dwóch operandów. Jeśli którykolwiek z bitów argumentu ma wartość 1, wówczas wartość wyjściowa wynosi 1, jeśli nie, będzie to 0.

Przykład

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

Wyjście: 31

2) Bitowe ORAZ

Jest to również operator bitowy, który przyjmuje 2 argumenty i jest oznaczony symbolem „&”. operator bitowy porównuje odpowiednie bity dwóch operandów. Jeżeli oba bity argumentu operacji mają wartość 1, wówczas wartość wyjściowa wynosi 1, w przeciwnym razie 0.

Przykład

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

Wyjście: 11

3) Uzupełnienie bitowe

W przeciwieństwie do dwóch pozostałych operatorów, o których mówiliśmy do tej pory, wymaga to tylko jednego operandu i oznaczonego symbolem „~”. Ten operator odwraca bit argumentu. Jeśli bit argumentu ma wartość 0, wówczas konwertuje go na 1 i odwrotnie.

Przykład

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

Wyjście: -16

Uwaga: kiedy uruchomisz program Java, otrzymasz wynik -16 zamiast 240, ponieważ kompilator pokazuje uzupełnienie 2 tej liczby, tj. Ujemne pojęcie liczby binarnej.

Uzupełnienie 2 dowolnej liczby jest równoważne z - (n + 1), gdzie n jest liczbą, której uzupełnienie 2 ma być obliczone. W naszym przypadku uzupełnienie 2 argumentu 15 wynosi -16, co jest również wynikiem programu.

4) Bitowy XOR

Bitowy XOR jest operatorem binarnym, który przyjmuje 2 operandy i oznacza za pomocą symbolu „^”. operator ten porównuje odpowiednie bity dwóch operandów. Jeśli odpowiadające im bity dwóch argumentów są różne, to daje 1 jako wyjście 0.

Bitowy operator XOR jest równoważny (Bitowe OR + Bitowe Uzupełnienie)

Przykład

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

Wyjście: 20

5) Podpisano lewe przesunięcie

Operator bitowy przesunięcia w lewo przesuwa wzór bitów w lewo o określoną liczbę razy określoną w operandzie. Lewy operator zmiany biegów jest oznaczony symbolem „<<”.

Przykład

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

wyjście: 246, 492, 984

6) Podpisano prawą zmianę

Podpisany operator przesunięcia w prawo działa dokładnie tak samo jak operator przesunięcia w lewo, tyle że dodaje zero bitów, które są przesunięte do pozycji wysokiego rzędu.

Przykład

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

Wyjście: 61, 30, 15

7) Unsigned Right Shift

Prawy operator przesunięcia przesuwa zero do skrajnego lewego położenia o określoną liczbę bitów określoną w operandzie.

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

Wyjście : 61, 30, 15

Wniosek - manipulacja bitami w Javie

Teraz, gdy dotarliśmy do końca artykułu, podsumujmy podsumowując kluczową kwestię, którą omówiliśmy w tym artykule. Widzieliśmy, czym jest nieco manipulacja i jej różne przypadki użycia. Nauczyliśmy się także różnych typów operatorów bitowych (Bitowy AND, Bitowy OR, Bitwise Complement i Bitwise XOR) oraz operatorów przesunięcia bitowego (podpisany operator przesunięcia w lewo, podpisany operator przesunięcia w prawo i niepodpisany operator przesunięcia w prawo) wraz z przykładem i próbką Program Java wyjaśniający poszczególnych operatorów.

Polecane artykuły

To jest przewodnik po Bit Manipulation w Javie. W tym miejscu szczegółowo omawiamy operatory Java Bitwise i Bitshift z przykładami i programami Java oraz ich wynikami. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -

  1. Co to jest interfejs Java?
  2. Narzędzia Java
  3. Frameworki Python
  4. Operatory logiczne w Javie