1. Побитов &оператор

По-рано казахме, че всички данни се съхраняват в паметта в двоично представяне. Така че преди доста време програмистите измислиха много интересни начини за работа с двоични числа. Например Java има логически оператори, които оперират с битовете на двоичното представяне на числото: &(И), | (OR), ~(НЕ or допълнение) и ^(XOR - изключително or).

a & b
Побитов &оператор (И).

Този оператор е много подобен на логическия &(И) оператор, само че се обозначава с един амперсанд, а не с два:

И се прилага към отделни битове. Всеки операнд се третира като масив от битове и ith бит от резултата се изчислява с помощта на ith бит на всеки от двата операнда.

Първият бит от резултата ще бъде изчислен на базата на първия бит на числото a и първия бит на числото b, вторият бит — на базата на втория бит на числото a и втория бит на числото bи т.н.

Операторът &(И) означава, че "резултантният бит е equals на единица само ако съответният бит на числото aе equals на единица, ANDсъответният бит на числото bе equals на единица":

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Примери:

Пример Резултат
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. Побитов |оператор

Този оператор е много подобен на логическия |(ИЛИ) оператор, само че се обозначава с една вертикална линия, а не с две:

a | b

И се прилага към отделни битове. Всеки операнд се третира като масив от битове и i-тият бит от резултата се изчислява с помощта на i-тия бит на всеки от двата операнда.

Побитовият |оператор (ИЛИ) означава, че "резултантният бит е equals на едно, ако съответният бит на числото aе equals на едно, ORсъответният бит на числото bе equals на едно":

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Примери:

Пример Резултат
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Само когато съответните битове (битовете на една и съща позиция) на двете числа са нула, съответният бит на резултата е equals на нула.



3. Побитов ^(XOR or "изключително or") оператор

Операторът XOR, който също се произнася изключителен or , се обозначава със ^символа. За да го въведете от клавиатурата, натиснете shift + 6 (на английска клавиатурна подредба).

a ^ b

Този оператор е донякъде подобен на ORоператора, включително в това, че има подобно име:XOR

Побитовият ^(XOR) оператор означава, че "резултантният бит е equals на единица, ако съответният бит на числото aе equals на единица, ORсъответният бит на числото bе equals на единица, но не и на двете едновременно":

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Примери:

Пример Резултат
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Само когато съответните битове (битовете на една и съща позиция) на двете числа са различни , съответният бит на резултата е equals на единица . Ако битовете са еднакви , полученият бит е equals на нула .



4. Побитов ~оператор (NOT, COMPLEMENT).

Мисля, че вече можете да познаете Howво прави. Този оператор е много подобен на логическия !(НЕ) оператор, но се обозначава с тилда , а не с удивителен знак:

~a

Това е унарен оператор, което означава, че се прилага за едно число, а не за две. Появява се преди този единствен операнд.

Побитовият ~оператор означава "резултантният бит е единица, ако съответният бит на числото aе нула, и е нула, ако съответният бит на числото aе единица":

~1 = 0
~0 = 1

Примери:

Пример Резултат
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Този оператор просто променя битовете, които са 1на 0и битовете, които са 0на 1.