Побітові оператори JavaScript

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Побітові оператори

Побітові оператори впливають на операнди як набір бітів (0 і 1). Наприклад, десяткове число 9 має бінарне представлення 1001. Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення.

Таблиця побітових представлень двійкових чисел
Двійкове представлення Десяткове представлення Шісняцяткове представлення Двійкове представлення Десяткове представлення Шісняцяткове представлення
Двійкове представлення Десяткове представлення Шісняцяткове представлення Двійкове представлення Десяткове представлення Шісняцяткове представлення


Побітові Логічні оператори

Побітові логічні оператори працюють таким чином:

  • Операнди перетворені в 32-бітові цілі числа, і вирази рядків бітів (0 і 1).
  • Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі.

____* Оператор застосовується до кожної пари бітів, і результат створений побітовий.

Побітовi оператори:
____* Побітове І & повертає 1, якщо обидва операнди 1.
____* Побітове АБО | повертає 1, якщо будь-який операнд 1.
____* Виключне побітове АБО ^ повертає 1, якщо є 1 але не обидва операнди 1.
Наприклад, бінарне представлення 9 - 1001, і бінарне представлення 15 - 1111. Так, коли побітові оператори застосовуються до цих значень, то результати виглядають наступним чином:
____* 15 & 9 повертає 9 (1111 & 1001 = 1001)
____* 15 | 9 повертає 15 (1111 | 1001 = 1111)
____* 15 ^ 9 повертає 6 (1111 ^ 1001 = 0110)


Оператори присвоювання

Оператор присвоює значення лівому операнду, заснованому на значенні правого операнда. Основний оператор присвоювання рівність (=), який присвоює значення правого операнда лівому операнду. Тобто x = y приписує значення y до x (значення у присвоюється х).

Інші оператори виглядають наступним чином:

  • Додавання, конкатенація: x += y означає x = x + y
  • Віднімання: x -= y означає x = x - y
  • Множення: x *= y означає x = x * y
  • Ділення: x /= y означає x = x / y
  • Обчислення залишку від ділення: x %= y означає x = x % y


Є додаткові оператори присвоювання для побітових операторів

  • Побітовий зсув вліво: x <<= y означає x = x << y
  • Побітовий зсув праворуч: x >> = y означає x = x >> y
  • Побітовий зсув вправо із заповненням нулями x >>>= y означає x = x >>> y
  • Побітове AND x &= y означає x = x & y
  • Виключне побітове АБО x ^ = y означає x = x ^ y
  • Побітове OR x |= y означає x = x | y


Побітові оператори зсуву

Побітові оператори зсуву:

  • Зсув вліво (<<)
  • Зсув вправо (>>)
  • Зсув вправо із заповненням нулями (>>>)


Оператор зсуву присвоює два операнди: перший - кількість на яке буде зміщено, і другий визначає число бітових положень, якими перший операнд повинен бути змістити. Напрямок дії зсуву управляється керуючим оператором.

Оператори зсуву перетворять операнди до 32-бітового цілого числа, і повертають результат того ж самого типу що і лівий оператор.

Зсув вліво (<<)

Зсув вліво переміщує всі біти вліво на кількість позицій, вказаних в правій частині виразу, заповнюючи позиції, що звільнилися нулями.

Наприклад, 9 << 2 повертає 36, тому що 1001 зсувається на 2 біти вліво і стає рівним 100100, що дорівнює в дісятерічной системі 36.

Зсув вправо (>>)

Зсув вправо заповнює звільнені ліворуч позиції значенням самого лівого біта вихідного значення.

Наприклад, 9 >> 2 повертає 2, тому що 1001 зсувається на два біти вправо і стає 10, що дорівнює в десятичній системі 2. Аналогічно, -9 >> 2 повертає -3, тому що знак зберігається.

Зсув вправо із заповненням нулями (>>>)

Зсув вправо із заповненням нулями працює аналогічно зсуву вліво, тільки в протилежному напрямі.

Наприклад, 19>>> 2 повертає 4, бо 10011 зсувається на два біти праворуч і стають 100, що дорівнює в десятичній системі 4. Для postive чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат.


Оператори мови JavaScript