Operatorzy stanowią podstawowy element składowy każdego języka programowania. Również Java udostępnia wiele typów operatorów, których można używać w zależności od potrzeb wykonywania różnych obliczeń i funkcji, czy to logicznych, arytmetycznych, relacyjnych itp. Są one klasyfikowane na podstawie zapewnianej przez nie funkcjonalności. Oto kilka typów:
- Operatory arytmetyczne
- Operatory jednoargumentowe
- Operator przypisania
- Operatorzy relacyjni
- Operatory logiczne
- Operator trójskładnikowy
- Operatory bitowe
- Operatorzy zmian
W tym artykule wyjaśniono wszystko, co trzeba wiedzieć na temat operatorów bitowych.
Operatory bitowe
Operatory bitowe służą do manipulacji pojedynczymi bitami liczby. Można ich używać z dowolnym typem całkowitym (char, short, int itp.). Są one używane podczas wykonywania operacji aktualizacji i zapytań na drzewach indeksowanych binarnie.
Przyjrzyjmy się teraz każdemu z operatorów bitowych w Javie:
1. Bitowy LUB (|)
Ten operator jest operatorem binarnym, oznaczonym przez „|”. Zwraca bit po bicie LUB wartości wejściowych, tj. jeśli którykolwiek z bitów ma wartość 1, daje 1, w przeciwnym razie pokazuje 0.
Przykład:
a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary) Bitwise OR Operation of 5 and 7 0101 | 0111 ________ 0111 = 7 (In decimal)>
2. Bitowe ORAZ (&)
Ten operator jest operatorem binarnym, oznaczonym jako „&”. Zwraca bit po bicie ORAZ wartości wejściowych, tj. jeśli oba bity mają wartość 1, daje 1, w przeciwnym razie pokazuje 0.
Przykład:
a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary) Bitwise AND Operation of 5 and 7 0101 & 0111 ________ 0101 = 5 (In decimal)>
3. Bitowy XOR (^)
Operator ten jest operatorem binarnym, oznaczonym jako „^”. Zwraca bit po bicie XOR wartości wejściowych, czyli jeśli odpowiadające sobie bity są różne, daje 1, w przeciwnym razie pokazuje 0.
lista tablic
Przykład:
a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary) Bitwise XOR Operation of 5 and 7 0101 ^ 0111 ________ 0010 = 2 (In decimal)>
4. Dopełnienie bitowe (~)
Ten operator jest operatorem jednoargumentowym, oznaczonym jako „~”. Zwraca on reprezentację wartości wejściowej z uzupełnieniem jednostkowym, tj. z odwróconymi wszystkimi bitami, co oznacza, że zamienia każde 0 na 1 i każde 1 na 0.
Przykład:
a = 5 = 0101 (In Binary) Bitwise Complement Operation of 5 ~ 0101 ________ 1010 = 10 (In decimal)>
JawaNotatka: Kompilator poda uzupełnienie 2 tej liczby, tj. uzupełnienie 2 10 będzie wynosić -6.
// Java program to illustrate // bitwise operators public class operators { public static void main(String[] args) b)); // bitwise xor // 0101 ^ 0111=0010 = 2 System.out.println('a^b = ' + (a ^ b)); // bitwise not // ~00000000 00000000 00000000 00000101=11111111 11111111 11111111 11111010 // will give 2's complement (32 bit) of 5 = -6 System.out.println('~a = ' + ~a); // can also be combined with // assignment operator to provide shorthand // assignment // a=a&b a &= b; System.out.println('a= ' + a); }> Wyjście
a&b = 5 a|b = 7 a^b = 2 ~a = -6 a= 5>
Przestrzeń pomocnicza:O(1)
Złożoność czasowa:O(1)
Jawa // Demonstrating the bitwise logical operators class GFG { public static void main (String[] args) { String binary[]={ '0000','0001','0010','0011','0100','0101', '0110','0111','1000','1001','1010', '1011','1100','1101','1110','1111' }; // initializing the values of a and b int a=3; // 0+2+1 or 0011 in binary int b=6; // 4+2+0 or 0110 in binary // bitwise or int c= a | b; // bitwise and int d= a & b; // bitwise xor int e= a ^ b; // bitwise not int f= (~a & b)|(a &~b); int g= ~a & 0x0f; System.out.println(' a= '+binary[a]); System.out.println(' b= '+binary[b]); System.out.println(' a|b= '+binary[c]); System.out.println(' a&b= '+binary[d]); System.out.println(' a^b= '+binary[e]); System.out.println('~a & b|a&~b= '+binary[f]); System.out.println('~a= '+binary[g]); } }> Wyjście
a= 0011 b= 0110 a|b= 0111 a&b= 0010 a^b= 0101 ~a & b|a&~b= 0101 ~a= 1100>
Operatory przesunięcia bitowego (operatory przesunięcia)
Operatory przesunięcia służą do przesuwania bitów liczby w lewo lub w prawo, odpowiednio mnożąc lub dzieląc liczbę przez dwa. Można ich użyć, gdy musimy pomnożyć lub podzielić liczbę przez dwa.
Składnia:
number shift_op number_of_places_to_shift;>
Rodzaje operatorów zmianowych:
Operatory zmiany są dalej podzielone na 4 typy. To są:
- Podpisany Operator przesunięcia w prawo (>>)
- Operator przesunięcia bez znaku w prawo (>>>)
- Operator przesunięcia w lewo(<<)
- Operator przesunięcia w lewo bez znaku (<<<)
Notatka: Więcej szczegółów na temat operatorów Shift w Javie można znaleźć w artykule Operator Shift w Javie .
program do implementacji wszystkich operatorów Bitwise w Javie do wprowadzania danych przez użytkownika
Jawa import java.util.Scanner; public class BitwiseOperators { public static void main(String[] args) Scanner input = new Scanner(System.in); System.out.print('Enter first number: '); int num1 = input.nextInt(); System.out.print('Enter second number: '); int num2 = input.nextInt(); System.out.println('Bitwise AND: ' + (num1 & num2)); System.out.println('Bitwise OR: ' + (num1 }> Wejście
Enter first number: 4 Enter second number: 8>
Wyjście
Bitwise AND: 0 Bitwise OR: 12 Bitwise XOR: 12 Bitwise NOT: -5 Bitwise Left Shift: 16 Bitwise Right Shift: 1 Bitwise Unsigned Right Shift: 1>
Wyjaśnienie
Program ten prosi użytkownika o wprowadzenie dwóch liczb: Num1 i Num2. Następnie wykonuje następujące operacje bitowe przy użyciu operatorów &, |, ^, ~, <> i>>>:
Bitowe AND
Bitowe LUB
Bitowy XOR
Bitowe NIE
Bitowe przesunięcie w lewo
Bitowe przesunięcie w prawo
Bitowe przesunięcie zera w prawo
Zalety
Zalety używania operatorów bitowych w Javie to:
matematyka w Javie
- Prędkość: Operacje bitowe są znacznie szybsze niż operacje arytmetyczne, ponieważ działają bezpośrednio na binarnych reprezentacjach liczb.
- Optymalizacja przestrzeni: Operacji bitowych można używać do przechowywania wielu wartości w jednej zmiennej, co może być przydatne podczas pracy z ograniczoną pamięcią.
- Manipulacja bitami: Operatory bitowe pozwalają na precyzyjną kontrolę nad poszczególnymi bitami liczby, co może być przydatne w różnych zastosowaniach, takich jak kryptografia, wykrywanie błędów i kompresja.
- Uproszczenie kodu : Operacje bitowe mogą uprościć kod, zmniejszając liczbę instrukcji warunkowych i pętli wymaganych do wykonania określonych zadań.
Podsumowując, operatory bitowe są ważnym narzędziem optymalizacji wydajności, poprawy czytelności kodu i zmniejszenia złożoności kodu w aplikacjach Java.