logo

Operador bit a bit a Java

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.

Operador bit a bit a Java

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 &amp; 1000 = 1000 = 8 System.out.println(&apos;x &amp; y = &apos; + (x &amp; y)); } } 

Sortida

 x &amp; 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.

Operador bit a bit a Java

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(&apos;x ^ y = &apos; + (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.

Operador bit a bit a Java

Utilitzem l'operador OR inclòs per bits en un programa Java.

BitwiseInclusiveOrExample.java

 public class BitwiseInclusiveOrExample { public static void main(String[] args) y = &apos; + (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
Operador bit a bit a Java

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(&apos;~x = &apos; + (~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 &lt;&gt; number of places to shift; 

Per exemple, si a=10

 a&gt;&gt;2; //shifts two bits a&gt;&gt;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:

Operador bit a bit a Java

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(&apos;x&gt;&gt;2 = &apos; + (x &gt;&gt;2)); } } 

Sortida

 x&gt;&gt;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< Operador bit a bit a Java

Exemple 1: Quin serà el resultat després de canviar a<<3. the value of a is 20.< strong>

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

ordenar matriu java

20*23= 20*8 = 160

Exemple 2: Quin serà el resultat després de canviar a<<2. the value of a is -10.< strong>

La representació de -10 en binari és = 11110110

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

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

 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>

Sortida

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