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

Матеріал з Вікі ЦДУ
Версія від 08:20, 7 квітня 2012; V kotyak (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

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

Таблиця побітових представлень двійкових чисел.
Двійкове представлення Десяткове представлення Шісняцяткове представлення Двійкове представлення Десяткове представлення Шісняцяткове представлення
0000 0 0 1000 8 8
0001 1 1 1009 9 9
0010 2 2 1010 10 A
0011 3 3 1011 11 B
0100 4 4 1100 12 C
0101 5 5 1101 13 D
0110 6 6 1110 14 E
0111 7 7 1111 15 F


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

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

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

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

  • Побітове AND "&" повертає 1, якщо обидва операнди 1.
  • Побітове АБО "|" повертає 1, якщо будь-який операнд 1.
  • Виключне побітове АБО "^" повертає 1, якщо є 1 але не обидва операнди 1.

Приклад:

15 & 9 = 9    (1111 & 1001 = 1001)
15 | 9 = 15   (1111 | 1001 = 1111)
15 ^ 9 = 6    (1111 ^ 1001 = 0110)

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

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

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


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

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

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

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

9 << 2 = 36 (1001 << 2 = 100100)

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

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

9 >> 2 = 2 (1001 >> 2 = 10)

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

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

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


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