Відмінності між версіями «Побітові оператори JavaScript»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Створена сторінка: == '''''Побітові Оператори''''' == Побітові оператори впливають на операнди як набір бітів (0 і 1…)
 
 
(не показані 19 проміжних версій 2 учасників)
Рядок 1: Рядок 1:
== '''''Побітові Оператори''''' ==
+
Побітові оператори впливають на операнди як набір бітів ('''0''' і '''1''').<br>
Побітові оператори впливають на операнди як набір бітів (0 і 1). Наприклад, десяткове число 9 має бінарне представлення 1001. Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення.<br/><br/>
+
Побітові оператори виконують дії на таких двійкових представленнях, але вони повертають стандартне JavaScript чисельне значення.
 +
<TABLE border = 1 align = center>
 +
<CAPTION> '''''Таблиця побітових представлень двійкових чисел.''''' </CAPTION>
 +
<TR>
 +
  <TH align = center>Двійкове представлення</TH>
 +
  <TH align = center>Десяткове представлення</TH>
 +
  <TH align = center>Шісняцяткове представлення</TH>
 +
  <TD> </TD>
 +
  <TH align = center>Двійкове представлення</TH>
 +
  <TH align = center>Десяткове представлення</TH>
 +
  <TH align = center>Шісняцяткове представлення</TH>
 +
</TR>
 +
<TR>
 +
  <TD align = center>0000</TD>
 +
  <TD align = center>0</TD>
 +
  <TD align = center>0</TD>
 +
  <TD> </TD>
 +
  <TD align = center>1000</TD>
 +
  <TD align = center>8</TD>
 +
  <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>
 +
</TABLE>
 +
 
  
 
== '''''Побітові Логічні оператори''''' ==
 
== '''''Побітові Логічні оператори''''' ==
Побітові логічні оператори працюють таким чином:<br/>
+
'''Побітові логічні оператори працюють таким чином:'''<br/>
&nbsp;&nbsp;&nbsp;&nbsp;* Операнди перетворені в 32-бітові цілі числа, і вирази рядків бітів (0 і 1).
+
* Операнди перетворені в '''32-бітові''' цілі числа, і вирази рядків бітів ('''0''' і '''1''').
&nbsp;&nbsp;&nbsp;&nbsp;* Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі.
+
* Кожен біт в першому операнді з'єднаний з відповідним бітом у другому операнді: перший біт до першого біту, другий біт до другого біту, і так далі.
____* Оператор застосовується до кожної пари бітів, і результат створений побітовий.<br/><br/>
+
* Оператор застосовується до кожної пари бітів, і результат створений побітовий.<br/><br/>
''Побітовi оператори:''<br/>
+
'''Побітовi оператори:'''<br/>
____* Побітове І & повертає 1, якщо обидва операнди 1.<br/>
+
* Побітове AND "'''&'''" повертає 1, якщо обидва операнди 1.<br/>
____* Побітове АБО | повертає 1, якщо будь-який операнд 1.<br/>
+
* Побітове АБО "'''|'''" повертає 1, якщо будь-який операнд 1.<br/>
____* Виключне побітове АБО ^ повертає 1, якщо є 1 але не обидва операнди 1.<br/>
+
* Виключне побітове АБО "'''^'''" повертає 1, якщо є 1 але не обидва операнди 1.<br/>
Наприклад, бінарне представлення 9 - 1001, і бінарне представлення 15 - 1111. Так, коли побітові оператори застосовуються до цих значень, то результати виглядають наступним чином:<br/>
+
____* 15 & 9 повертає 9 (1111 & 1001 = 1001)<br/>
+
____* 15 | 9 повертає 15 (1111 | 1001 = 1111)<br/>
+
____* 15 ^ 9 повертає 6 (1111 ^ 1001 = 0110)<br/>
+
  
 +
Приклад:
 +
'''15 & 9 = 9'''    (1111 & 1001 = 1001)
 +
'''15 | 9 = 15'''  (1111 | 1001 = 1111)
 +
'''15 ^ 9 = 6'''    (1111 ^ 1001 = 0110)
  
== '''''Оператори присвоювання''''' ==
+
== '''''Побітові оператори зсуву''''' ==
Оператор присвоює значення лівому операнду, заснованому на значенні правого операнда. Основний оператор присвоювання рівність (=), який присвоює значення правого операнда лівому операнду. Тобто x = y приписує значення y до x (значення у присвоюється х).
+
 
 +
Побітові оператори зсуву:
  
Інші оператори виглядають наступним чином:
 
 
<ul>
 
<ul>
<li>Додавання, конкатенація: '''x += y''' означає '''x = x + y''' </li>
+
<li>Зсув вліво (<<) </li>
<li>Віднімання: '''x -= y''' означає '''x = x - y''' </li>
+
<li>Зсув вправо (>>) </li>
<li>Множення: '''x *= y''' означає '''x = x * y''' </li>
+
<li>Зсув вправо із заповненням нулями (>>>) </li>
<li>Ділення: '''x /= y''' означає '''x = x / y''' </li>
+
<li>Обчислення залишку від ділення: '''x %= y''' означає '''x = x % y''' </li>
+
</ul>
+
<br>
+
Є додаткові оператори присвоювання для побітових операторів
+
<ul>
+
<li>Побітовий зсув вліво: '''x <<= y''' означає '''x = x << y''' </li>
+
<li>Побітовий зсув праворуч: '''x >> = y''' означає '''x = x >> y''' </li>
+
<li>Побітовий зсув вправо із заповненням нулями '''x >>>= y''' означає '''x = x >>> y''' </li>
+
<li>Побітове AND '''x &= y''' означає '''x = x & y''' </li>
+
<li>Виключне побітове АБО '''x ^ = y''' означає '''x = x ^ y''' </li>
+
<li>Побітове OR '''x |= y''' означає '''x = x | y''' </li>
+
 
</ul>
 
</ul>
  
  
 +
Оператор зсуву присвоює два операнди: перший - кількість на яке буде зміщено, і другий визначає число бітових положень, якими перший операнд повинен бути змістити. Напрямок дії зсуву управляється керуючим оператором.
  
 +
Оператори зсуву перетворять операнди до 32-бітового цілого числа, і повертають результат того ж самого типу що і лівий оператор.
  
 +
'''Зсув вліво (<<)'''
  
 +
Зсув вліво переміщує всі біти вліво на кількість позицій, вказаних в правій частині виразу, заповнюючи позиції, що звільнилися нулями.
  
 +
'''9 << 2 = 36''' (1001 << 2 = 100100)
  
 +
'''Зсув вправо (>>)'''
  
 +
Зсув вправо заповнює звільнені ліворуч позиції значенням самого лівого біта вихідного значення.
  
 +
'''9 >> 2 = 2''' (1001 >> 2 = 10)
  
 +
'''Зсув вправо із заповненням нулями (>>>)'''
  
 +
Зсув вправо із заповненням нулями працює аналогічно зсуву вліво, тільки в протилежному напрямі.
  
 +
Наприклад, 19 >>> 2 повертає 4, бо 10011 зсувається на два біти праворуч і стають 100, що дорівнює в десятичній системі 4. Для postive чисел, нуль - заповнює правий зсув, і що поширюється знак зміщюється вправо видає той же самий результат.
  
  
 +
[[Оператори мови JavaScript]]
  
 +
[[category:Інтернет-програмування|*]]
  
 
+
[[category:Навчальні проекти]]
 
+
 
+
 
+
 
+
 
+
 
+
 
+
[[Оператори мови JavaScript]]
+

Поточна версія на 08:20, 7 квітня 2012

Побітові оператори впливають на операнди як набір бітів (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