logo

Побитов оператор в Java

В Java, an оператор е символ, който изпълнява посочените операции. В този раздел ще обсъдим само побитов оператор и неговите видове с подходящи примери.

Видове побитови оператори

В Java има шест вида побитови оператори:

  • Побитово И
  • Побитово изключително ИЛИ
  • Побитово включващо ИЛИ
  • Побитов комплимент
  • Оператори за изместване на битове
Оператори Символ Употреби
Побитово И и op1 & op2
Побитово изключително ИЛИ ^ op1 ^ op2
Побитово включващо ИЛИ | op1 | op2
Побитов комплимент ~ ~ оп
Побитово изместване наляво << op1 << op2
Побитово изместване надясно >> op1 >> op2
Неподписан десен оператор за изместване >>> на >>> брой места за преместване

Нека обясним подробно побитовия оператор.

Побитово И (&)

Това е двоичен оператор, обозначен със символа и . Връща 1 само ако и двата бита са 1, в противен случай връща 0.

Побитов оператор в Java

Нека използваме побитовия оператор И в програма на 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)); } } 

Изход

 x &amp; y = 8 

Побитово изключително ИЛИ (^)

Това е двоичен оператор, обозначен със символа ^ (произнася се като карета). Връща 0, ако и двата бита са еднакви, в противен случай връща 1.

Побитов оператор в Java

Нека използваме побитово изключващия оператор OR в програма на 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)); } } 

Изход

 x ^ y = 1 

Побитово включително ИЛИ (|)

Това е двоичен оператор, обозначен със символа | (произнася се като тръба). Връща 1, ако някой от битовете е 1, в противен случай връща 0.

Побитов оператор в Java

Нека използваме побитово включващия оператор OR в програма на Java.

BitwiseInclusiveOrExample.java

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

Изход

 x | y = 9 

Побитово допълнение (~)

Това е унарен оператор, обозначен със символа ~ (произнася се като тилда). Връща обратното или допълнение на бита. Това прави всяка 0 1 и всяка 1 0.

ограничения на електронното банкиране
Побитов оператор в Java

Нека използваме оператора за побитово допълнение в програма на 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)); } } 

Изход

 ~x = -3 

Оператори за изместване на битове

Операторът за изместване се използва за изместване на битовете надясно или наляво. Можем да използваме оператори за преместване, ако разделим или умножим което и да е число по 2. Общият формат за преместване на бита е както следва:

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

Например, ако a=10

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

Java предоставя следните типове оператори за смяна:

  • Подписан оператор за надясно изместване или побитов оператор за изместване надясно
  • Неподписан десен оператор за изместване
  • Оператор за ляво изместване със знак или побитов оператор за ляво изместване

Забележка: Java не поддържа неподписан ляв оператор за смяна (<<<).< h4>

Подписан десен оператор за преместване (>>)

Подписаният десен оператор за изместване измества битов модел на число към точно със зададен брой позиции и запълва 0. Операторът се означава със символа >>. Той също така запазва най-левия бит (знаков бит). Ако 0 е представено в най-левия бит, това означава, че числото е положителен . Ако 1 е представено в най-левия бит, това означава, че числото е отрицателен .

Като цяло, ако напишем a>>n, това означава да преместим битовете на число надясно с определена позиция (n). От гледна точка на математиката можем да представим оператора за десен преместване със знак, както следва:

Побитов оператор в Java

Забележка: Когато приложим оператор за десен преместване върху положително число, получаваме и положителното число в резултата. По същия начин, когато приложим оператор за десен отместване върху отрицателно число, получаваме и отрицателното число в резултата.

Пример: Приложете оператора за десен преместване със знак със зададени позиции 4, ако x = 256 и x = -256.

Ако x = 256

256 >> 4

256/24= 16

сортиране на кортежи python

Ако x = -256

-256 >> 4

-256/24= -16

В горния пример забелязахме, че след изместване операторът 256 се преобразува в 16, а -256 се преобразува в -16.

Нека създадем Java програма и внедрим оператора за ляво преместване.

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)); } } 

Изход

 x&gt;&gt;2 = 12 

Подписан ляв оператор за преместване (<<)< strong>

Подписаният ляв оператор за смяна (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>Той също така запазва най-левия бит (знаков бит). Не запазва знаковия бит.

По принцип, ако напишем a< Побитов оператор в Java

Пример 1: Какъв ще бъде резултатът след преместване на a<<3. the value of a is 20.< strong>

Представянето на 20 в двоична система е = 00010100

След като изпълним ляв оператор за смяна, получаваме:

a << 3 = 10100000 (последните три бита са запълнените битове)

a << 3 = 160

оператор if else в java

Нека проверим резултата с помощта на формулата.

20 << 3

20*23= 20*8 = 160

Пример 2: Какъв ще бъде резултатът след преместване на a<<2. the value of a is -10.< strong>

Представянето на -10 в двоична система е = 11110110

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

Нека проверим резултата с помощта на формулата.

-10 << 3

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

Нека създадем Java програма и внедрим знаковия ляв оператор за смяна.

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>

Изход

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