В Java, an оператор е символ, който изпълнява посочените операции. В този раздел ще обсъдим само побитов оператор и неговите видове с подходящи примери.
Видове побитови оператори
В Java има шест вида побитови оператори:
- Побитово И
- Побитово изключително ИЛИ
- Побитово включващо ИЛИ
- Побитов комплимент
- Оператори за изместване на битове
Оператори | Символ | Употреби |
---|---|---|
Побитово И | и | op1 & op2 |
Побитово изключително ИЛИ | ^ | op1 ^ op2 |
Побитово включващо ИЛИ | | | op1 | op2 |
Побитов комплимент | ~ | ~ оп |
Побитово изместване наляво | << | op1 << op2 |
Побитово изместване надясно | >> | op1 >> op2 |
Неподписан десен оператор за изместване | >>> на >>> | брой места за преместване |
Нека обясним подробно побитовия оператор.
Побитово И (&)
Това е двоичен оператор, обозначен със символа и . Връща 1 само ако и двата бита са 1, в противен случай връща 0.
Нека използваме побитовия оператор И в програма на 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)); } }
Изход
x & y = 8
Побитово изключително ИЛИ (^)
Това е двоичен оператор, обозначен със символа ^ (произнася се като карета). Връща 0, ако и двата бита са еднакви, в противен случай връща 1.
Нека използваме побитово изключващия оператор 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('x ^ y = ' + (x ^ y)); } }
Изход
x ^ y = 1
Побитово включително ИЛИ (|)
Това е двоичен оператор, обозначен със символа | (произнася се като тръба). Връща 1, ако някой от битовете е 1, в противен случай връща 0.
Нека използваме побитово включващия оператор OR в програма на Java.
BitwiseInclusiveOrExample.java
public class BitwiseInclusiveOrExample { public static void main(String[] args) y = ' + (x }
Изход
x | y = 9
Побитово допълнение (~)
Това е унарен оператор, обозначен със символа ~ (произнася се като тилда). Връща обратното или допълнение на бита. Това прави всяка 0 1 и всяка 1 0.
ограничения на електронното банкиране
Нека използваме оператора за побитово допълнение в програма на 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)); } }
Изход
~x = -3
Оператори за изместване на битове
Операторът за изместване се използва за изместване на битовете надясно или наляво. Можем да използваме оператори за преместване, ако разделим или умножим което и да е число по 2. Общият формат за преместване на бита е както следва:
variable <> number of places to shift;
Например, ако a=10
a>>2; //shifts two bits a>>4; //shifts 4 bits
Java предоставя следните типове оператори за смяна:
- Подписан оператор за надясно изместване или побитов оператор за изместване надясно
- Неподписан десен оператор за изместване
- Оператор за ляво изместване със знак или побитов оператор за ляво изместване
Забележка: Java не поддържа неподписан ляв оператор за смяна (<<<).< h4> Подписан десен оператор за преместване (>>)
Подписаният десен оператор за изместване измества битов модел на число към точно със зададен брой позиции и запълва 0. Операторът се означава със символа >>. Той също така запазва най-левия бит (знаков бит). Ако 0 е представено в най-левия бит, това означава, че числото е положителен . Ако 1 е представено в най-левия бит, това означава, че числото е отрицателен .
Като цяло, ако напишем a>>n, това означава да преместим битовете на число надясно с определена позиция (n). От гледна точка на математиката можем да представим оператора за десен преместване със знак, както следва:
Забележка: Когато приложим оператор за десен преместване върху положително число, получаваме и положителното число в резултата. По същия начин, когато приложим оператор за десен отместване върху отрицателно число, получаваме и отрицателното число в резултата.
Пример: Приложете оператора за десен преместване със знак със зададени позиции 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('x>>2 = ' + (x >>2)); } }
Изход
x>>2 = 12
Подписан ляв оператор за преместване (<<)< strong> )<>
Подписаният ляв оператор за смяна (<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>Той също така запазва най-левия бит (знаков бит). Не запазва знаковия бит.)>
По принцип, ако напишем a< Пример 1: Какъв ще бъде резултатът след преместване на a<<3. the value of a is 20.< strong> 3.> Представянето на 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> 2.> Представянето на -10 в двоична система е = 11110110 а<<2 11011000='<strong' =>-402> Нека проверим резултата с помощта на формулата. -10 << 3 -10*22= -10*4 = -40 Нека създадем Java програма и внедрим знаковия ляв оператор за смяна. SignedLeftShiftOperatorExample.java Изход оператор if else в 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>