Відмінності між версіями «Побітові оператори PHP»
(не показані 9 проміжних версій ще одного учасника) | |||
Рядок 1: | Рядок 1: | ||
Побітові операції призначені для роботи (установки / зняття / перевірки) груп бітів в цілій змінній. Біти цілого числа - це не що інше, як окремі розряди того ж самого числа, записаного в двійковій системі числення.Наприклад, у двійковій системі число 12 буде виглядати як 1100, а 2 - як 10, так що вираз 12|2 поверне нам число 14 (1110 у двійковій запису). Якщо змінна не ціла, то вона спочатку округляється, а вже потім до неї застосовуються перераховані нижче оператори. | Побітові операції призначені для роботи (установки / зняття / перевірки) груп бітів в цілій змінній. Біти цілого числа - це не що інше, як окремі розряди того ж самого числа, записаного в двійковій системі числення.Наприклад, у двійковій системі число 12 буде виглядати як 1100, а 2 - як 10, так що вираз 12|2 поверне нам число 14 (1110 у двійковій запису). Якщо змінна не ціла, то вона спочатку округляється, а вже потім до неї застосовуються перераховані нижче оператори. | ||
− | Для представлення одного числа використовуються 32 біта: | + | ''Для представлення одного числа використовуються 32 біта:'' |
<ul> | <ul> | ||
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0000 - '''це нуль''';</li> |
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0001 - '''це 1''';</li> |
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0010 - '''це 2''';</li> |
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0011 - '''це 3''';</li> |
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0100 - '''це 4''';</li> |
− | <li | + | <li>0000 0000 0000 0000 0000 0000 0000 0101 - '''це 5''';</li> |
− | + | '''...''' | |
− | + | <li>0000 0000 0000 0000 0000 0000 0000 1111 - '''це 15''';</li> | |
− | <li | + | '''...''' |
− | + | ||
</ul> | </ul> | ||
− | <p>Побітові оператори:</p> | + | |
− | <TABLE border= | + | <p>'''Побітові оператори''':</p> |
+ | |||
+ | <TABLE border=1 cellpadding="3" cellspacing="1" bgcolor="#000066"> | ||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
Рядок 27: | Рядок 28: | ||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a & $b</TD> | <TD>$a & $b</TD> | ||
− | <TD>Побітове ' | + | <TD>Побітове 'і'</TD> |
− | <TD>Встановлюються тільки ті біти, які встановлені і в $a, | + | <TD>Встановлюються тільки ті біти, які встановлені і в $a, і в $b.</TD> |
</TR> | </TR> | ||
Рядок 51: | Рядок 52: | ||
<TD>$a << $b</TD> | <TD>$a << $b</TD> | ||
<TD>Зрушення вліво</TD> | <TD>Зрушення вліво</TD> | ||
− | <TD>Всі біти змінної $a | + | <TD>Всі біти змінної $a зміщюються на $b позицій вліво (кожна позиція має на увазі 'множення на 2') </TD> |
</TR> | </TR> | ||
Рядок 57: | Рядок 58: | ||
<TD>$a >> $b</TD> | <TD>$a >> $b</TD> | ||
<TD>Зрушення вправо</TD> | <TD>Зрушення вправо</TD> | ||
− | <TD>Всі біти змінної $a | + | <TD>Всі біти змінної $a зміщюються на $b позицій вправо (кожна позиція має на увазі 'ділення на 2') </TD> |
</TR> | </TR> | ||
</TABLE> | </TABLE> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | |||
+ | <p>''У разі якщо присутні і лівий, і правий операнди рядка, побітові операції будуть працювати з їх ASCII-уявленнями.''</p> | ||
+ | |||
+ | '''Приклад:''' | ||
+ | <CODE><SPAN style="COLOR: #000000"><SPAN | ||
+ | style="COLOR: #0000bb"><?php<BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #007700">echo </SPAN><SPAN style="COLOR: #0000bb">12 </SPAN><SPAN | ||
+ | style="COLOR: #007700">^ </SPAN><SPAN style="COLOR: #0000bb">9</SPAN><SPAN | ||
+ | style="COLOR: #007700">; </SPAN><SPAN | ||
+ | style="COLOR: #ff8000">// Виведе '5'<BR> | ||
+ | <BR> | ||
+ | </SPAN><SPAN | ||
+ | style="COLOR: #007700">echo </SPAN><SPAN | ||
+ | style="COLOR: #dd0000">"12" </SPAN><SPAN style="COLOR: #007700">^ </SPAN><SPAN | ||
+ | style="COLOR: #dd0000">"9"</SPAN><SPAN style="COLOR: #007700">; </SPAN><SPAN | ||
+ | style="COLOR: #ff8000">// Покаже символ повернення коретки (ascii 8)<BR> | ||
// ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8<BR> | // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8<BR> | ||
− | <BR> | + | <BR> |
− | </SPAN><SPAN | + | </SPAN><SPAN |
− | style="COLOR: #007700">echo </SPAN><SPAN | + | style="COLOR: #007700">echo </SPAN><SPAN |
− | style="COLOR: #dd0000">" | + | style="COLOR: #dd0000">"hello" </SPAN><SPAN |
− | style="COLOR: #007700">^ </SPAN><SPAN style="COLOR: #dd0000">"hello"</SPAN><SPAN | + | style="COLOR: #007700">^ </SPAN><SPAN style="COLOR: #dd0000">"hello"</SPAN><SPAN |
− | style="COLOR: #007700">; </SPAN><SPAN | + | style="COLOR: #007700">; </SPAN><SPAN |
− | style="COLOR: #ff8000">// Виведе наступні ASCII-значення: #0 #4 #0 #0 #0<BR> | + | style="COLOR: #ff8000">// Виведе наступні ASCII-значення: #0 #4 #0 #0 #0<BR> |
// 'a' ^ 'e' = #4<BR> | // 'a' ^ 'e' = #4<BR> | ||
− | </SPAN><SPAN | + | </SPAN><SPAN |
− | style="COLOR: #0000bb">?></SPAN></SPAN></CODE> | + | style="COLOR: #0000bb">?></SPAN></SPAN></CODE> |
− | <p>Примітка: Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.</p> | + | |
+ | <p>'''Примітка:''' ''Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.''</p> | ||
+ | |||
+ | [[Оператори мови PHP]] |
Поточна версія на 08:13, 7 травня 2010
Побітові операції призначені для роботи (установки / зняття / перевірки) груп бітів в цілій змінній. Біти цілого числа - це не що інше, як окремі розряди того ж самого числа, записаного в двійковій системі числення.Наприклад, у двійковій системі число 12 буде виглядати як 1100, а 2 - як 10, так що вираз 12|2 поверне нам число 14 (1110 у двійковій запису). Якщо змінна не ціла, то вона спочатку округляється, а вже потім до неї застосовуються перераховані нижче оператори.
Для представлення одного числа використовуються 32 біта:
- 0000 0000 0000 0000 0000 0000 0000 0000 - це нуль;
- 0000 0000 0000 0000 0000 0000 0000 0001 - це 1;
- 0000 0000 0000 0000 0000 0000 0000 0010 - це 2;
- 0000 0000 0000 0000 0000 0000 0000 0011 - це 3;
- 0000 0000 0000 0000 0000 0000 0000 0100 - це 4;
- 0000 0000 0000 0000 0000 0000 0000 0101 - це 5;
- 0000 0000 0000 0000 0000 0000 0000 1111 - це 15;
...
...
Побітові оператори:
Приклад | Назва | Результат |
---|---|---|
$a & $b | Побітове 'і' | Встановлюються тільки ті біти, які встановлені і в $a, і в $b. |
$a | $b | Побітове 'або' | Встановлюються ті біти, які встановлені або в $a, або в $b. |
$a ^ $b | Виключне або | Встановлюються тільки ті біти, які встановлені або тільки в $a, або тільки в $b |
~ $a | Заперечення | Встановлюються ті біти, які в $a не встановлені, і навпаки. |
$a << $b | Зрушення вліво | Всі біти змінної $a зміщюються на $b позицій вліво (кожна позиція має на увазі 'множення на 2') |
$a >> $b | Зрушення вправо | Всі біти змінної $a зміщюються на $b позицій вправо (кожна позиція має на увазі 'ділення на 2') |
У разі якщо присутні і лівий, і правий операнди рядка, побітові операції будуть працювати з їх ASCII-уявленнями.
Приклад:
<?php
echo 12 ^ 9; // Виведе '5'
echo "12" ^ "9"; // Покаже символ повернення коретки (ascii 8)
// ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8
echo "hello" ^ "hello"; // Виведе наступні ASCII-значення: #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>
Примітка: Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.