Ці оператори працюють на 32-бітних цілих числах. Кожен оператор виконує дію над окремими бітами числа.
Таблиця операторів:
Оператор | Назва | Приклад | Пояснення (у бітах) | Результат | Десяткове |
---|---|---|---|---|---|
& | І (AND) | 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | АБО (OR) | 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | НЕ (NOT) | ~5 | ~0101 | 1010 | -6 * |
^ | ВИКЛЮЧНЕ АБО (XOR) | 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
<< | Зсув вліво | 5 << 1 | 0101 << 1 | 1010 | 10 |
>> | Зсув вправо | 5 >> 1 | 0101 >> 1 | 0010 | 2 |
>>> | Беззнаковий зсув | 5 >>> 1 | 0101 >>> 1 | 0010 | 2 |
*
~5
насправді дорівнює-6
, оскільки~
інвертує всі біти 32-бітного числа.
Просте пояснення:
&
(AND): повертає1
тільки якщо обидва біти1
.|
(OR): повертає1
якщо хоча б один біт1
.~
(NOT): інвертує всі біти (тобто0
стає1
, і навпаки).^
(XOR): повертає1
тільки якщо біти різні.<<
(зсув вліво): зміщує біти вліво, додає0
справа.>>
(зсув вправо): зміщує біти вправо, зберігаючи знак (для від’ємних чисел).>>>
(беззнаковий зсув вправо): зсув вправо без збереження знаку (незалежно від того, чи число додатне/від’ємне).
Побітові оператори з присвоєнням

Є два числа — x
і y
. Ми хочемо щось зробити з їхніми бітами (нулями та одиницями), і зберегти результат у x
.
x &= y
— AND (І)
jsCopyEditx &= y // те саме, що x = x & y
Кожен біт: буде 1
тільки якщо і в x
, і в y
був 1
.
Приклад:
jsCopyEditlet x = 5; // 0101
let y = 3; // 0011
x &= y; // 0001 (тобто 1)
x ^= y
— XOR (виключне АБО)
jsCopyEditx ^= y // те саме, що x = x ^ y
Кожен біт: буде 1
, якщо тільки один з них — 1, але не обидва.
Приклад:
jsCopyEditlet x = 5; // 0101
let y = 3; // 0011
x ^= y; // 0110 (тобто 6)
x |= y
— OR (АБО)
jsCopyEditx |= y // те саме, що x = x | y
Кожен біт: буде 1
, якщо хоча б один з них 1
.
Приклад:
jsCopyEditlet x = 5; // 0101
let y = 3; // 0011
x |= y; // 0111 (тобто 7)
Уяви, що x
і y
— це два рядки з лампочками (0 — лампочка вимкнена, 1 — увімкнена):
Оператор | Що робить | Мнемоніка |
---|---|---|
&= | Лампочка світить, якщо обидві світять | “обоє — так” |
^= | Лампочка світить, якщо тільки одна | “або-або, не обидві” |
|= | Лампочка світить, якщо хоч одна | “якщо хоча б один — так”, то результат — теж “так” (тобто 1 ) |