A Java, an operador és un símbol que realitza les operacions especificades. En aquesta secció, parlarem només de operador bit a bit i els seus tipus amb exemples adequats.
Tipus d'operador bit a bit
Hi ha sis tipus d'operador bit a bit a Java:
- I per bits
- OR exclusiu per bits
- OR inclòs per bits
- Elogi per bits
- Operadors de canvi de bits
Operadors | Símbol | Usos |
---|---|---|
I per bits | & | op1 i op2 |
OR exclusiu per bits | ^ | op1 ^ op2 |
OR inclòs per bits | | | op1 | op2 |
Elogi per bits | ~ | ~ op |
Desplaçament a l'esquerra per bits | << | op1 << op2 |
Desplaçament a la dreta per bits | >> | op1 >> op2 |
Operador de canvi dret sense signar | >>> a >>> | nombre de places per desplaçar-se |
Expliquem detalladament l'operador bit a bit.
I per bits (&)
És un operador binari indicat pel símbol & . Retorna 1 si i només si els dos bits són 1, sinó retorna 0.
Utilitzem l'operador AND bit a bit en un programa Java.
parell de java
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)); } }
Sortida
x & y = 8
OR exclusiu per bits (^)
És un operador binari indicat pel símbol ^ (pronunciat com a caret). Retorna 0 si els dos bits són iguals, en cas contrari retorna 1.
Utilitzem l'operador OR exclusiu per bits en un programa 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)); } }
Sortida
x ^ y = 1
OR inclòs per bits (|)
És un operador binari indicat pel símbol | (pronunciat com a pipa). Retorna 1 si algun dels bits és 1, en cas contrari retorna 0.
Utilitzem l'operador OR inclòs per bits en un programa Java.
BitwiseInclusiveOrExample.java
public class BitwiseInclusiveOrExample { public static void main(String[] args) y = ' + (x }
Sortida
x | y = 9
Complement de bits (~)
És un operador unari indicat pel símbol ~ (pronunciat com la tilda). Retorna la inversa o complement del bit. Fa cada 0 un 1 i cada 1 un 0.
guineu vs llop
Utilitzem l'operador de complement bit a bit en un programa 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)); } }
Sortida
~x = -3
Operadors de canvi de bits
L'operador de canvi s'utilitza per desplaçar els bits a la dreta o a l'esquerra. Podem utilitzar operadors de desplaçament si dividim o multipliquem qualsevol nombre per 2. El format general per desplaçar el bit és el següent:
variable <> number of places to shift;
Per exemple, si a=10
a>>2; //shifts two bits a>>4; //shifts 4 bits
Java proporciona els següents tipus d'operadors de desplaçament:
- Operador de canvi a la dreta signat o operador de canvi a la dreta per bits
- Operador de canvi dret sense signar
- Operador de canvi a l'esquerra signat o operador de canvi a l'esquerra per bits
Nota: Java no admet l'operador de desplaçament esquerre sense signar (<<<).< h4> Operador de canvi dret signat (>>)
L'operador de desplaçament a la dreta signat desplaça un patró de bits d'un número cap a dret amb un nombre especificat de posicions i omple 0. L'operador es denota amb el símbol >>. També conserva el bit més esquerre (bit de signe). Si 0 es presenta al bit més esquerre, vol dir que el número és positiu . Si 1 es presenta al bit més esquerre, vol dir que el número és negatiu .
En general, si escrivim a>>n, vol dir desplaçar els bits d'un nombre cap a la dreta amb una posició especificada (n). En termes de matemàtiques, podem representar l'operador de desplaçament a la dreta amb signe de la següent manera:
Nota: quan apliquem l'operador de desplaçament dret a un nombre positiu, també obtenim el nombre positiu al resultat. De la mateixa manera, quan apliquem l'operador de desplaçament dret a un nombre negatiu, també obtenim el nombre negatiu al resultat.
Exemple: apliqueu l'operador de desplaçament a la dreta amb signe amb les posicions especificades 4 si x = 256 i x = -256.
Si x = 256
256 >> 4
256/24= 16
Si x = -256
-256 >> 4
-256/24= -16
En l'exemple anterior, hem observat que després de canviar l'operador 256 convertit en 16 i -256 convertit en -16.
k algorisme de agrupació
Creem un programa Java i implementem l'operador de desplaçament a l'esquerra.
SignedRightShiftOperatorExample.java
public class SignedRightShiftOperatorExample { public static void main(String args[]) { int x = 50; System.out.println('x>>2 = ' + (x >>2)); } }
Sortida
x>>2 = 12
Operador de canvi esquerre signat (<<)< strong> )<>
L'operador de desplaçament esquerre signat (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>També conserva el bit més esquerre (bit de signe). No conserva el bit del signe.)>
En general, si escrivim a< Exemple 1: Quin serà el resultat després de canviar a<<3. the value of a is 20.< strong> 3.> La representació de 20 en binari és = 00010100 Després de realitzar l'operador de desplaçament a l'esquerra, obtenim: a << 3 = 10100000 (els tres últims bits són els bits plens) a << 3 = 160 Comprovem el resultat utilitzant la fórmula. 20 << 3 20*23= 20*8 = 160 Exemple 2: Quin serà el resultat després de canviar a<<2. the value of a is -10.< strong> 2.> La representació de -10 en binari és = 11110110 a<<2 11011000='<strong' =>-402> Comprovem el resultat utilitzant la fórmula. -10 << 3 -10*22= -10*4 = -40 Creem un programa Java i implementem l'operador de desplaçament a l'esquerra signat. SignedLeftShiftOperatorExample.java Sortida ordenar matriu java
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>