Ці оператори працюють на 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) |