V Javě, an operátor je symbol, který provádí zadané operace. V této části budeme diskutovat pouze o bitový operátor a jeho typy se správnými příklady.
Typy bitových operátorů
V Javě existuje šest typů bitových operátorů:
- Bitové AND
- Bitově exkluzivní OR
- Bitově včetně OR
- Bitový kompliment
- Operátory bitového posunu
Operátoři | Symbol | Použití |
---|---|---|
Bitové AND | & | op1 a op2 |
Bitově exkluzivní OR | ^ | op1 ^ op2 |
Bitově včetně OR | | | op1 | op2 |
Bitový kompliment | ~ | ~ op |
Bitový posun doleva | << | op1 << op2 |
Bitový posun doprava | >> | op1 >> op2 |
Nepodepsaný operátor pravé směny | >>> na >>> | počet míst k posunu |
Vysvětleme si bitový operátor podrobně.
Bitové AND (&)
Je to binární operátor označený symbolem & . Vrátí 1 tehdy a jen tehdy, když jsou oba bity 1, jinak vrátí 0.
Použijme bitový operátor AND v programu Java.
co to znamená xd
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)); } }
Výstup
x & y = 8
Bitové výhradní NEBO (^)
Je to binární operátor označený symbolem ^ (vyslovuje se jako stříška). Pokud jsou oba bity stejné, vrátí 0, jinak vrátí 1.
Použijme bitový exkluzivní operátor OR v programu 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)); } }
Výstup
x ^ y = 1
Bitové včetně OR (|)
Je to binární operátor označený symbolem | (vyslovuje se jako dýmka). Vrátí 1, pokud je některý z bitů 1, jinak vrátí 0.
Použijme bitový operátor OR v programu Java.
BitwiseInclusiveOrExample.java
public class BitwiseInclusiveOrExample { public static void main(String[] args) y = ' + (x }
Výstup
x | y = 9
Bitový doplněk (~)
Je to unární operátor označený symbolem ~ (vyslovuje se jako tilda). Vrací inverzní hodnotu nebo doplněk bitu. Dělá to každou 0 a 1 a každou 1 0.
liška vs vlk
Použijme operátor bitového doplňku v programu 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)); } }
Výstup
~x = -3
Operátory bitového posunu
Operátor Shift se používá při posouvání bitů vpravo nebo vlevo. Operátory posunu můžeme použít, pokud vydělíme nebo vynásobíme libovolné číslo dvěma. Obecný formát pro posun bitu je následující:
variable <> number of places to shift;
Pokud například a=10
a>>2; //shifts two bits a>>4; //shifts 4 bits
Java poskytuje následující typy operátorů směn:
- Podepsaný operátor pravého posunu nebo bitový operátor pravého posunu
- Nepodepsaný operátor pravé směny
- Podepsaný operátor levého posunu nebo bitový operátor levého posunu
Poznámka: Java nepodporuje nepodepsaný operátor posunu vlevo (<<<).< h4> Podepsaný operátor posunu vpravo (>>)
Operátor posunu vpravo se znaménkem posune bitový vzor čísla směrem k že jo se zadaným počtem pozic a vyplní 0. Operátor je označen symbolem >>. Také zachovává bit nejvíce vlevo (bit znaménka). Li 0 je uveden v bitu zcela vlevo, to znamená, že číslo je pozitivní . Li 1 je uveden v bitu zcela vlevo, to znamená, že číslo je negativní .
Obecně platí, že pokud píšeme a>>n, znamená to posunout bity čísla směrem doprava se zadanou pozicí (n). Z hlediska matematiky můžeme operátor posunu vpravo se znaménkem reprezentovat takto:
Poznámka: Když použijeme operátor posunu vpravo na kladné číslo, dostaneme kladné číslo také ve výsledku. Podobně, když použijeme operátor posunu vpravo na záporné číslo, dostaneme ve výsledku také záporné číslo.
Příklad: Použijte operátor posunu vpravo se zadanými pozicemi 4, pokud x = 256 a x = -256.
Pokud x = 256
256 >> 4
256/24= 16
Pokud x = -256
historie v Javě
-256 >> 4
-256/24= -16
Ve výše uvedeném příkladu jsme pozorovali, že po přeřazení operátor 256 převeden na 16 a -256 převeden na -16.
Vytvořme Java program a implementujme operátor levého řazení.
SignedRightShiftOperatorExample.java
public class SignedRightShiftOperatorExample { public static void main(String args[]) { int x = 50; System.out.println('x>>2 = ' + (x >>2)); } }
Výstup
x>>2 = 12
Podepsaný operátor levé směny (<<)< strong> )<>
Podepsaný operátor směny vlevo (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>Také zachovává bit nejvíce vlevo (bit znaménka). Nezachovává znaménkový bit.)>
Obecně platí, že pokud píšeme < Příklad 1: Jaký bude výsledek po posunutí a<<3. the value of a is 20.< strong> 3.> Reprezentace 20 v binární podobě je = 00010100 Po provedení levého operátora směny dostaneme: a << 3 = 10100000 (poslední tři bity jsou vyplněné bity) a << 3 = 160 Zkontrolujeme výsledek pomocí vzorce. 20 << 3 20*23= 20*8 = 160 Příklad 2: Jaký bude výsledek po posunutí a<<2. the value of a is -10.< strong> 2.> Reprezentace -10 v binárním systému je = 11110110 a<<2 11011000='<strong' =>-402> Zkontrolujeme výsledek pomocí vzorce. -10 << 3 -10*22= -10*4 = -40 Vytvořme Java program a implementujeme podepsaný operátor levé směny. SignedLeftShiftOperatorExample.java Výstup skóre přesnosti sklearn
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>