logo

Operator bitowy w Javie

W Javie an operator jest symbolem wykonującym określone operacje. W tej części omówimy tylko operator bitowy i jego typy z odpowiednimi przykładami.

Rodzaje operatorów bitowych

W Javie istnieje sześć typów operatorów bitowych:

  • Bitowe AND
  • Bitowe wyłączne LUB
  • Bitowe włącznie OR
  • Bitowy komplement
  • Operatory przesunięcia bitowego
Operatorzy Symbol Używa
Bitowe AND & op1 i op2
Bitowe wyłączne LUB ^ op1 ^ op2
Bitowe włącznie OR | op1 | op2
Bitowy komplement ~ ~op
Bitowe przesunięcie w lewo << op1 << op2
Bitowe przesunięcie w prawo >> op1 >> op2
Operator przesunięcia w prawo bez znaku >>> na >>> ilość miejsc do przesunięcia

Wyjaśnijmy szczegółowo operator bitowy.

Bitowe ORAZ (&)

Jest to operator binarny oznaczony symbolem & . Zwraca 1 wtedy i tylko wtedy, gdy oba bity mają wartość 1, w przeciwnym razie zwraca 0.

Operator bitowy w Javie

Użyjmy bitowego operatora AND w programie Java.

szary kod

BitwiseAndExample.java

 public class BitwiseAndExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise and // 1001 &amp; 1000 = 1000 = 8 System.out.println(&apos;x &amp; y = &apos; + (x &amp; y)); } } 

Wyjście

 x &amp; y = 8 

Bitowe wyłączne LUB (^)

Jest to operator binarny oznaczony symbolem ^ (wymawiane jako karetka). Zwraca 0, jeśli oba bity są takie same, w przeciwnym razie zwraca 1.

Operator bitowy w Javie

Użyjmy bitowego wyłącznego operatora OR w programie Java.

BitwiseXorExample.java

 public class BitwiseXorExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise XOR // 1001 ^ 1000 = 0001 = 1 System.out.println(&apos;x ^ y = &apos; + (x ^ y)); } } 

Wyjście

 x ^ y = 1 

Bitowe włącznie OR (|)

Jest to operator binarny oznaczony symbolem | (wymawiane jako fajka). Zwraca 1, jeśli którykolwiek z bitów ma wartość 1, w przeciwnym razie zwraca 0.

Operator bitowy w Javie

Użyjmy bitowego operatora OR w programie Java.

BitwiseInclusiveOrExample.java

 public class BitwiseInclusiveOrExample { public static void main(String[] args) y = &apos; + (x } 

Wyjście

 x | y = 9 

Dopełnienie bitowe (~)

Jest to operator jednoargumentowy oznaczony symbolem ~ (wymawiane jako tylda). Zwraca odwrotność lub uzupełnienie bitu. Sprawia, że ​​każde 0 jest 1, a każde 1 jest 0.

q1 q2 q3 q4
Operator bitowy w Javie

Użyjmy operatora dopełnienia bitowego w programie Java.

BitwiseComplimentExample.java

 public class BitwiseComplimentExample { public static void main(String[] args) { int x = 2; // bitwise compliment // ~0010= 1101 = -3 System.out.println(&apos;~x = &apos; + (~x)); } } 

Wyjście

 ~x = -3 

Operatory przesunięcia bitowego

Operator przesunięcia służy do przesuwania bitów w prawo lub w lewo. Operatorów przesunięcia możemy używać, jeśli dzielimy lub mnożymy dowolną liczbę przez 2. Ogólny format przesuwania bitu jest następujący:

 variable &lt;&gt; number of places to shift; 

Na przykład, jeśli a=10

 a&gt;&gt;2; //shifts two bits a&gt;&gt;4; //shifts 4 bits 

Java udostępnia następujące typy operatorów shift:

  • Operator przesunięcia w prawo ze znakiem lub operator bitowego przesunięcia w prawo
  • Operator przesunięcia w prawo bez znaku
  • Podpisany operator lewego przesunięcia lub operator bitowego przesunięcia w lewo

Uwaga: Java nie obsługuje operatora przesunięcia w lewo bez znaku (<<<).< h4>

Podpisany operator przesunięcia w prawo (>>)

Operator przesunięcia w prawo ze znakiem przesuwa wzór bitowy liczby w kierunku Prawidłowy z określoną liczbą pozycji i wypełnień 0. Operator jest oznaczony symbolem >>. Zachowuje także lewy bit (bit znaku). Jeśli 0 jest prezentowany w lewym skrajnym bicie, oznacza to, że liczba jest pozytywny . Jeśli 1 jest prezentowany w lewym skrajnym bicie, oznacza to, że liczba jest negatywny .

Ogólnie rzecz biorąc, jeśli napiszemy a>>n, oznacza to przesunięcie bitów liczby w prawo o określoną pozycję (n). Z punktu widzenia matematyki operator przesunięcia w prawo ze znakiem możemy przedstawić w następujący sposób:

Operator bitowy w Javie

Uwaga: Kiedy zastosujemy operator przesunięcia w prawo na liczbie dodatniej, w wyniku otrzymamy również liczbę dodatnią. Podobnie, gdy zastosujemy operator przesunięcia w prawo do liczby ujemnej, w wyniku otrzymamy również liczbę ujemną.

Przykład: Zastosuj operator przesunięcia w prawo ze znakiem z określonymi pozycjami 4, jeśli x = 256 i x = -256.

Jeśli x = 256

256 >> 4

256/24= 16

Jeśli x = -256

-256 >> 4

-256/24= -16

W powyższym przykładzie zaobserwowaliśmy, że po przesunięciu operator 256 zamienił się na 16, a -256 zamienił na -16.

układ siatki

Stwórzmy program w Javie i zaimplementujmy operator lewego przesunięcia.

SignedRightShiftOperatorExample.java

 public class SignedRightShiftOperatorExample { public static void main(String args[]) { int x = 50; System.out.println(&apos;x&gt;&gt;2 = &apos; + (x &gt;&gt;2)); } } 

Wyjście

 x&gt;&gt;2 = 12 

Podpisany operator lewego przesunięcia (<<)< strong>

Operator przesunięcia w lewo ze znakiem (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>Zachowuje także lewy bit (bit znaku). Nie zachowuje bitu znaku.

Ogólnie rzecz biorąc, jeśli napiszemy a< Operator bitowy w Javie

Przykład 1: Jaki będzie wynik po przesunięciu a<<3. the value of a is 20.< strong>

Reprezentacja liczby 20 w systemie binarnym to = 00010100

Po wykonaniu operatora przesunięcia w lewo otrzymujemy:

a << 3 = 10100000 (ostatnie trzy bity to bity wypełnione)

za << 3 = 160

Sprawdźmy wynik korzystając ze wzoru.

20 << 3

sumator pełny sumator

20*23= 20*8 = 160

Przykład 2: Jaki będzie wynik po przesunięciu a<<2. the value of a is -10.< strong>

Reprezentacja -10 w systemie binarnym to = 11110110

a<<2 11011000='<strong' =>-40

Sprawdźmy wynik korzystając ze wzoru.

-10 << 3

-10*22= -10*4 = -40

Stwórzmy program w Javie i zaimplementujmy operator lewego przesunięcia ze znakiem.

SignedLeftShiftOperatorExample.java

 public class SignedLeftShiftOperatorExample { public static void main(String args[]) { int x = 12; System.out.println(&apos;x&lt;<1 = ' + (x << 1)); } < pre> <p> <strong>Output</strong> </p> <pre> x&lt;<1 24 = < pre> <h3>Unsigned Right Shift Operator (&gt;&gt;&gt;)</h3> <p>It shifts a zero at the leftmost position and fills 0. It is denoted by the symbol <strong>&gt;&gt;&gt;.</strong> Note that the leftmost position after &gt;&gt; depends on the sign bit. It does not preserve the sign bit.</p> <p> <strong>Example: If a=11110000 and b=2, find a&gt;&gt;&gt;b?</strong> </p> <p>a &gt;&gt;&gt; b = 11110000 &gt;&gt;&gt; 2 = <strong>00111100</strong> </p> <p>The left operand value is moved right by the number of bits specified by the right operand and the shifted bits are filled up with zeros. Excess bits shifted off to the right are discarded.</p> <p>Therefore, before shifting the bits the decimal value of a is 240, and after shifting the bits the decimal value of a is 60.</p> <p>Let&apos;s create a Java program and use the unsigned right shift operator.</p> <p> <strong>UnsignedRightShiftOperatorExample.java</strong> </p> <pre> public class UnsignedRightShiftOperatorExample { public static void main(String args[]) { int x = 20; System.out.println(&apos;x&gt;&gt;&gt;2 = &apos; + (x &gt;&gt;&gt;2)); } } </pre> <p> <strong>Output</strong> </p> <pre> x&gt;&gt;&gt;2 = 5 </pre> <hr></1></pre></1>

Wyjście

 x&gt;&gt;&gt;2 = 5