Відмінності між версіями «Побітові оператори JavaScript»
Рядок 1: | Рядок 1: | ||
== '''''Побітові оператори''''' == | == '''''Побітові оператори''''' == | ||
− | Побітові оператори впливають на операнди як набір бітів ('''0''' і '''1'''). Наприклад, десяткове число 9 має бінарне представлення 1001. Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення. | + | Побітові оператори впливають на операнди як набір бітів ('''0''' і '''1'''). Наприклад, десяткове число 9 має бінарне представлення 1001. Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення. |
<TABLE border = 1 align = center> | <TABLE border = 1 align = center> | ||
− | <CAPTION> Таблиця побітових представлень двійкових чисел </CAPTION> | + | <CAPTION> '''''Таблиця побітових представлень двійкових чисел.''''' </CAPTION> |
<TR> | <TR> | ||
<TH align = center>Двійкове представлення</TH> | <TH align = center>Двійкове представлення</TH> | ||
Рядок 13: | Рядок 13: | ||
</TR> | </TR> | ||
<TR> | <TR> | ||
− | <TD align = center> | + | <TD align = center>0000</TD> |
− | <TD align = center> | + | <TD align = center>0</TD> |
− | <TD align = center> | + | <TD align = center>0</TD> |
<TD> </TD> | <TD> </TD> | ||
− | <TD align = center> | + | <TD align = center>1000</TD> |
− | <TD align = center> | + | <TD align = center>8</TD> |
− | <TD align = center> | + | <TD align = center>8</TD> |
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0001</TD> | ||
+ | <TD align = center>1</TD> | ||
+ | <TD align = center>1</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1009</TD> | ||
+ | <TD align = center>9</TD> | ||
+ | <TD align = center>9</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0010</TD> | ||
+ | <TD align = center>2</TD> | ||
+ | <TD align = center>2</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1010</TD> | ||
+ | <TD align = center>10</TD> | ||
+ | <TD align = center>A</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0011</TD> | ||
+ | <TD align = center>3</TD> | ||
+ | <TD align = center>3</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1011</TD> | ||
+ | <TD align = center>11</TD> | ||
+ | <TD align = center>B</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0100</TD> | ||
+ | <TD align = center>4</TD> | ||
+ | <TD align = center>4</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1100</TD> | ||
+ | <TD align = center>12</TD> | ||
+ | <TD align = center>C</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0101</TD> | ||
+ | <TD align = center>5</TD> | ||
+ | <TD align = center>5</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1101</TD> | ||
+ | <TD align = center>13</TD> | ||
+ | <TD align = center>D</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0110</TD> | ||
+ | <TD align = center>6</TD> | ||
+ | <TD align = center>6</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1110</TD> | ||
+ | <TD align = center>14</TD> | ||
+ | <TD align = center>E</TD> | ||
+ | </TR> | ||
+ | <TR> | ||
+ | <TD align = center>0111</TD> | ||
+ | <TD align = center>7</TD> | ||
+ | <TD align = center>7</TD> | ||
+ | <TD> </TD> | ||
+ | <TD align = center>1111</TD> | ||
+ | <TD align = center>15</TD> | ||
+ | <TD align = center>F</TD> | ||
</TR> | </TR> | ||
</TABLE> | </TABLE> |
Версія за 10:56, 21 квітня 2010
Зміст
Побітові оператори
Побітові оператори впливають на операнди як набір бітів (0 і 1). Наприклад, десяткове число 9 має бінарне представлення 1001. Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне 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 оператори:
____* Побітове І & повертає 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 чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат.