1. &Operator bitowy

Wcześniej powiedzieliśmy, że wszystkie dane są przechowywane w pamięci w postaci binarnej. Tak więc dość dawno temu programiści wymyślili wiele interesujących sposobów pracy z liczbami binarnymi. Na przykład Java ma operatory logiczne, które działają na bitach binarnej reprezentacji liczby: &(AND), | (OR)( ~NOT lub uzupełnienie) i ^(XOR - wyłączne lub).

a & b
Operator bitowy &(AND).

Ten operator jest bardzo podobny do operatora logicznego &(AND), tyle że jest oznaczony pojedynczym znakiem ampersand, a nie dwoma:

I jest to stosowane do poszczególnych bitów. Każdy operand jest traktowany jako tablica bitów, a ith bit wyniku jest obliczany przy użyciu ith bitu każdego z dwóch operandów.

Pierwszy bit wyniku zostanie obliczony na podstawie pierwszego bitu liczby a i pierwszego bitu liczby b, drugi bit — na podstawie drugiego bitu liczby a i drugiego bitu liczby bitd.

Operator &(AND) oznacza „wynikowy bit jest równy jeden tylko wtedy, gdy odpowiedni bit liczby ajest równy jeden, ANDodpowiedni bit liczby bjest równy jeden”:

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

Przykłady:

Przykład Wynik
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. |Operator bitowy

Ten operator jest bardzo podobny do operatora logicznego |(OR), tyle że jest oznaczony pojedynczą linią pionową, a nie dwoma:

a | b

I jest to stosowane do poszczególnych bitów. Każdy operand jest traktowany jako tablica bitów, a i-ty bit wyniku jest obliczany na podstawie i-tego bitu każdego z dwóch operandów.

Operator bitowy |(OR) oznacza „wynikowy bit jest równy jeden, jeśli odpowiedni bit liczby ajest równy jeden, ORodpowiedni bit liczby bjest równy jeden”:

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

Przykłady:

Przykład Wynik
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Tylko wtedy, gdy odpowiednie bity (bity na tej samej pozycji) obu liczb są równe zeru, odpowiedni bit wyniku jest równy zeru.



3. Operator bitowy ^(XOR lub „wyłączny lub”)

Operator XOR, wymawiany również jako wyłączny lub , jest oznaczony symbolem ^. Aby wprowadzić go na klawiaturze, naciśnij shift + 6 (w układzie klawiatury angielskiej).

a ^ b

Ten operator jest nieco podobny do ORoperatora, w tym ma podobną nazwę:XOR

Operator bitowy ^(XOR) oznacza, że ​​„wynikowy bit jest równy jeden, jeśli odpowiedni bit liczby ajest równy jeden, ORodpowiedni bit liczby bjest równy jeden, ale nie oba jednocześnie”:

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

Przykłady:

Przykład Wynik
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Tylko wtedy, gdy odpowiednie bity (bity na tej samej pozycji) obu liczb są różne , odpowiedni bit wyniku jest równy jeden . Jeśli bity są takie same , wynikowy bit jest równy zeru .



4. Operator bitowy ~(NOT, COMPLEMENT).

Myślę, że już się domyślasz, co to robi. Ten operator jest bardzo podobny do operatora logicznego !(NOT), ale jest oznaczony tyldą , a nie wykrzyknikiem:

~a

Jest to operator jednoargumentowy , co oznacza, że ​​dotyczy jednej liczby, a nie dwóch. Pojawia się przed tym pojedynczym operandem.

Operator bitowy ~oznacza „wynikowy bit to jeden, jeśli odpowiedni bit liczby awynosi zero, i jest równy zero, jeśli odpowiedni bit liczby ato jeden”:

~1 = 0
~0 = 1

Przykłady:

Przykład Wynik
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Ten operator po prostu zmienia bit, który jest 1na 0i bity, które są 0na 1.