Відмінності між версіями «Побітові оператори PHP»
(Створена сторінка: Побітові операції призначені для роботи (установки / зняття / перевірки) груп бітів в цілі…) |
|||
Рядок 4: | Рядок 4: | ||
<ul> | <ul> | ||
− | <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0000 - | + | <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0000 - це нуль;</li> |
− | + | ||
<li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0001 - це 1;</li> | <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0001 - це 1;</li> | ||
<li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0010 - це 2;</li> | <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0010 - це 2;</li> | ||
Рядок 46: | Рядок 45: | ||
<TD>~ $a</TD> | <TD>~ $a</TD> | ||
<TD>Заперечення</TD> | <TD>Заперечення</TD> | ||
− | <TD> | + | <TD>Встановлюються ті біти, які в $a не встановлені, і навпаки. </TD> |
</TR> | </TR> | ||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a << $b</TD> | <TD>$a << $b</TD> | ||
− | <TD> | + | <TD>Зрушення вліво</TD> |
− | <TD> | + | <TD>Всі біти змінної $a сдвігаються на $b позицій вліво (кожна позиція має на увазі 'множення на 2') </TD> |
</TR> | </TR> | ||
<TR bgcolor="#FFFFFF" class="mtx4"> | <TR bgcolor="#FFFFFF" class="mtx4"> | ||
<TD>$a >> $b</TD> | <TD>$a >> $b</TD> | ||
− | <TD> | + | <TD>Зрушення вправо</TD> |
− | <TD> | + | <TD>Всі біти змінної $a сдвігаються на $b позицій вправо (кожна позиція має на увазі 'ділення на 2') </TD> |
</TR> | </TR> | ||
</TABLE> | </TABLE> | ||
− | <p> | + | <p>У разі якщо присутні і лівий, і правий операнди рядка, побітові операції будуть працювати з їх ASCII-уявленнями. Приклад:</p> |
<p class="highlight"><CODE><SPAN style="COLOR: #000000"><SPAN | <p class="highlight"><CODE><SPAN style="COLOR: #000000"><SPAN | ||
style="COLOR: #0000bb"><?php<BR> | style="COLOR: #0000bb"><?php<BR> | ||
Рядок 84: | Рядок 83: | ||
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">// | + | 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></p> | style="COLOR: #0000bb">?></SPAN></SPAN></CODE></p> | ||
− | <p> | + | <p>Примітка: Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.</p> |
− | + |
Версія за 20:30, 13 квітня 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 "hallo" ^ "hello"; // Виведе наступні ASCII-значення: #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>
Примітка: Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.