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.
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 & 1000 = 1000 = 8 System.out.println('x & y = ' + (x & y)); } }
Wyjście
x & 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.
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('x ^ y = ' + (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.
Użyjmy bitowego operatora OR w programie Java.
BitwiseInclusiveOrExample.java
public class BitwiseInclusiveOrExample { public static void main(String[] args) y = ' + (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
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('~x = ' + (~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 <> number of places to shift;
Na przykład, jeśli a=10
a>>2; //shifts two bits a>>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:
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('x>>2 = ' + (x >>2)); } }
Wyjście
x>>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< Przykład 1: Jaki będzie wynik po przesunięciu a<<3. the value of a is 20.< strong> 3.> 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 20*23= 20*8 = 160 Przykład 2: Jaki będzie wynik po przesunięciu a<<2. the value of a is -10.< strong> 2.> Reprezentacja -10 w systemie binarnym to = 11110110 a<<2 11011000='<strong' =>-402> 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 Wyjście sumator pełny sumator
public class SignedLeftShiftOperatorExample { public static void main(String args[]) { int x = 12; System.out.println('x<<1 = ' + (x << 1)); } < pre> <p> <strong>Output</strong> </p> <pre> x<<1 24 = < pre> <h3>Unsigned Right Shift Operator (>>>)</h3> <p>It shifts a zero at the leftmost position and fills 0. It is denoted by the symbol <strong>>>>.</strong> Note that the leftmost position after >> depends on the sign bit. It does not preserve the sign bit.</p> <p> <strong>Example: If a=11110000 and b=2, find a>>>b?</strong> </p> <p>a >>> b = 11110000 >>> 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'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('x>>>2 = ' + (x >>>2)); } } </pre> <p> <strong>Output</strong> </p> <pre> x>>>2 = 5 </pre> <hr></1></pre></1>
x>>>2 = 5
1>1>