1. Побітовий оператор AND
Колись ми говорили, що всі дані зберігаються в пам'яті у двійковій системі. Тому досить давно програмісти придумали багато чого цікавого для роботи з двійковим поданням чисел. Наприклад, у Java є логічні оператори, які працюють з бітами чисел: AND
(І), OR
(АБО), NOT
(НЕ) и XOR
(виключне АБО).
a & b
Цей оператор дуже схожий на логічний оператор AND
(І), тільки позначається не двома амперсандами, а одним:
І застосовується він не до числа в цілому, а до його бітів: число розглядається як масив бітів, й i
-й біт числа-результату обчислюється на основі i
-х бітів кожного з двох чисел.
Перший біт результату буде обчислюватися на основі першого біта числа a
і першого біта числа b
, другий біт — на основі другого біта числа a
і другого біта числа b
і т. д.
Ну а оператор AND
(І) означає, що «біт результату дорівнює одиниці, тільки якщо біт числа a
дорівнює одиниці І
біт числа b
дорівнює одиниці»:
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
Приклади:
Приклад | Результат |
---|---|
|
|
|
|
|
|
|
|
2. Побітовий оператор OR
Цей оператор дуже схожий на логічний оператор OR
(АБО), тільки позначається вже не двома вертикальними лініями, а однією:
a | b
Він також застосовується не до числа в цілому, а до його бітів: i-й біт числа-результату обчислюється на основі i-х бітів кожного з двох чисел.
Побітовий оператор OR
(АБО) означає, що «біт результату дорівнює одиниці, якщо біт числа a
дорівнює одиниці АБО
біт числа b
дорівнює одиниці»:
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
Приклади:
Приклад | Результат |
---|---|
|
|
|
|
|
|
|
|
Тільки коли біти, що стоять на однакових позиціях обох чисел, дорівнюють нулю, відповідний біт результату дорівнює нулю.
3. Побітовий оператор XOR
(ВИКЛЮЧНЕ АБО)
Оператор XOR
, який інакше називають виключне або, позначається символом ^
. Щоб увести його з клавіатури, потрібно натиснути shift+6 (в англійській розкладці).
a ^ b
Цей оператор чимось схожий на оператор OR
(він навіть має схожу назву — XOR
).
Побітовий оператор XOR
(ВИКЛЮЧНЕ АБО) означає, що «біт результату дорівнює одиниці, якщо біт числа a
дорівнює одиниці АБО
біт числа b
дорівнює одиниці, але не обидва одночасно»:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
Приклади:
Приклад | Результат |
---|---|
|
|
|
|
|
|
|
|
Тільки коли біти, що стоять на однакових позиціях обох чисел, різні, відповідний біт результату дорівнює одиниці. Якщо біти однакові, біт результату дорівнює нулю.
4. Побітовий оператор NOT
(НЕ, ЗАПЕРЕЧЕННЯ)
Думаю, ви вже здогадуєтеся, що він означає. Цей оператор дуже схожий на логічний оператор NOT
(НЕ), тільки позначається вже не знаком оклику, а тильдою:
~a
Цей оператор унарний: застосовується не до двох чисел, а до одного, перед яким і ставиться.
Побітовий оператор NOT
означає, що «біт результату дорівнює одиниці, якщо біт числа a
дорівнює нулю, і дорівнює нулю, якщо біт числа a
дорівнює одиниці»:
~1 = 0
~0 = 1
Приклади:
Приклад | Результат |
---|---|
|
|
|
|
|
|
|
|
Цей оператор просто змінює біт 1
на 0
, а 0
на 1
.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ