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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Створена сторінка: Побітові операції призначені для роботи (установки / зняття / перевірки) груп бітів в цілі…)
 
Рядок 4: Рядок 4:
  
 
<ul>
 
<ul>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0000 - это ноль;</li>
+
   <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>Устанавливаются те биты, которые в $a не установлены, и наоборот. </TD>
+
       <TD>Встановлюються ті біти, які в $a не встановлені, і навпаки. </TD>
  
 
     </TR>
 
     </TR>
 
     <TR bgcolor="#FFFFFF" class="mtx4">
 
     <TR bgcolor="#FFFFFF" class="mtx4">
 
       <TD>$a &lt;&lt; $b</TD>
 
       <TD>$a &lt;&lt; $b</TD>
       <TD>Сдвиг влево</TD>
+
       <TD>Зрушення вліво</TD>
       <TD>Все биты переменной $a сдвигаються на $b позиций влево (каждая позиция подразумевает 'умножение на 2') </TD>
+
       <TD>Всі біти змінної $a сдвігаються на $b позицій вліво (кожна позиція має на увазі 'множення на 2') </TD>
 
     </TR>
 
     </TR>
  
 
     <TR bgcolor="#FFFFFF" class="mtx4">
 
     <TR bgcolor="#FFFFFF" class="mtx4">
 
       <TD>$a &gt;&gt; $b</TD>
 
       <TD>$a &gt;&gt; $b</TD>
       <TD>Сдвиг вправо</TD>
+
       <TD>Зрушення вправо</TD>
       <TD>Все биты переменной $a сдвигаються на $b позиций вправо (каждая позиция подразумевает 'деление на 2') </TD>
+
       <TD>Всі біти змінної $a сдвігаються на $b позицій вправо (кожна позиція має на увазі 'ділення на 2') </TD>
 
     </TR>
 
     </TR>
  
 
</TABLE>
 
</TABLE>
<p>В случае если присутствуют и левый, и правый операнды строки, побитовые операции будут работать с их ASCII-представлениями. Пример:</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">&lt;?php<BR>
 
style="COLOR: #0000bb">&lt;?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">// Выведет следующие 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">?&gt;</SPAN></SPAN></CODE></p>
 
style="COLOR: #0000bb">?&gt;</SPAN></SPAN></CODE></p>
<p>Примечание: Не используйте сдвиг вправо более чем на 32 бита на тридцатидвухразрядных системах. Не используйте сдвиг вправо для получения чисел, требующих для записи более 32-х бит.</p>
+
<p>Примітка: Не використовуйте зрушення вправо більш ніж на 32 біта на тридцятидвухразрядних системах. Не використовуйте зрушення вправо для отримання чисел, що вимагають для запису більше 32-х біт.</p>
<a style="font-size:4px">&nbsp;</a><br />
+

Версія за 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-х біт.