logo

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

На Яві ан оператор символ, який виконує вказані операції. У цьому розділі ми обговоримо лише порозрядний оператор і його види з відповідними прикладами.

Типи порозрядних операторів

У Java існує шість типів побітового оператора:

  • Побітове І
  • Порозрядне виключаюче АБО
  • Побітове включне АБО
  • Порозрядний комплімент
  • Оператори зсуву бітів
Оператори символ Використання
Побітове І & op1 & op2
Порозрядне виключаюче АБО ^ op1 ^ op2
Побітове включне АБО | op1 | op2
Порозрядний комплімент ~ ~ ор
Порозрядний зсув вліво << op1 << op2
Порозрядний зсув вправо >> op1 >> op2
Беззнаковий оператор правого зсуву >>> на >>> кількість місць для пересування

Давайте детально пояснимо порозрядний оператор.

Побітове І (&)

Це двійковий оператор, який позначається символом & . Він повертає 1 тоді і тільки якщо обидва біти дорівнюють 1, інакше повертає 0.

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

Давайте використаємо порозрядний оператор І в програмі на Java.

покажчик в c

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

Давайте використаємо порозрядний виключаючий оператор АБО в програмі на 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

Давайте використаємо порозрядний оператор АБО в програмі Java.

BitwiseInclusiveOrExample.java

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

Вихід

 x | y = 9 

Побітове доповнення (~)

Це унарний оператор, позначений символом ~ (вимовляється як тильда). Він повертає інверсію або доповнення до біта. Це робить кожен 0 1, а кожну 1 0.

як перетворити рядок на int java
Побітовий оператор в 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

Якщо х = -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>Він також зберігає крайній лівий біт (знаковий біт). Він не зберігає знаковий біт.

Загалом, якщо ми пишемо < Побітовий оператор в Java

Приклад 1: Який буде результат після зсуву a<<3. the value of a is 20.< strong>

Представлення 20 у двійковій системі = 00010100

Після виконання оператора зсуву вліво отримуємо:

a << 3 = 10100000 (останні три біти є заповненими бітами)

a << 3 = 160

Перевіримо результат за формулою.

20 << 3

20*23= 20*8 = 160

Приклад 2: Який буде результат після зсуву a<<2. the value of a is -10.< strong>

Представлення -10 у двійковій системі = 11110110

a<<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