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
Operator | Opis |
I | Bitowe 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 -
- Co to jest interfejs Java?
- Narzędzia Java
- Frameworki Python
- Operatory logiczne w Javie