logo

Operatory bitowe w Javie


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:

  1. Operatory arytmetyczne
  2. Operatory jednoargumentowe
  3. Operator przypisania
  4. Operatorzy relacyjni
  5. Operatory logiczne
  6. Operator trójskładnikowy
  7. Operatory bitowe
  8. 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)>

Notatka: Kompilator poda uzupełnienie 2 tej liczby, tj. uzupełnienie 2 10 będzie wynosić -6.

Jawa
// 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ą:

  1. Podpisany Operator przesunięcia w prawo (>>)
  2. Operator przesunięcia bez znaku w prawo (>>>)
  3. Operator przesunięcia w lewo(<<)
  4. 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
  1. Prędkość: Operacje bitowe są znacznie szybsze niż operacje arytmetyczne, ponieważ działają bezpośrednio na binarnych reprezentacjach liczb.
  2. 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ą.
  3. 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.
  4. 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.