Відмінності між версіями «Побітові оператори 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 class="mtx1">0000 0000 0000 0000 0000 0000 0000 0000 - це нуль;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0000 - '''це нуль''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0001 - це 1;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0001 - '''це 1''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0010 - це 2;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0010 - '''це 2''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0011 - це 3;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0011 - '''це 3''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0100 - це 4;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0100 - '''це 4''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 0101 - це 5;</li>
+
   <li>0000 0000 0000 0000 0000 0000 0000 0101 - '''це 5''';</li>
  <li class="mtx1">...</li>
+
'''...'''
 
+
   <li>0000 0000 0000 0000 0000 0000 0000 1111 - '''це 15''';</li>
   <li class="mtx1">0000 0000 0000 0000 0000 0000 0000 1111 - это 15;</li>
+
'''...'''
  <li class="mtx1">...</li>
+
 
</ul>
 
</ul>
<p>Побітові оператори:</p>
+
 
<TABLE border=0 cellpadding="3" cellspacing="1" bgcolor="#000066">
+
<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 &amp; $b</TD>
 
       <TD>$a &amp; $b</TD>
       <TD>Побітове 'и'</TD>
+
       <TD>Побітове 'і'</TD>
       <TD>Встановлюються тільки ті біти, які встановлені і в $a, и в $b.</TD>
+
       <TD>Встановлюються тільки ті біти, які встановлені і в $a, і в $b.</TD>
 
     </TR>
 
     </TR>
  
Рядок 51: Рядок 52:
 
       <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>
  
Рядок 57: Рядок 58:
 
       <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 class="highlight"><CODE><SPAN style="COLOR: #000000"><SPAN
 
style="COLOR: #0000bb">&lt;?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>
 
  
 +
 +
<p>''У разі якщо присутні і лівий, і правий операнди рядка, побітові операції будуть працювати з їх ASCII-уявленнями.''</p>
 +
 +
'''Приклад:'''
 +
<CODE><SPAN style="COLOR: #000000"><SPAN
 +
style="COLOR: #0000bb">&lt;?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">"hallo" </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: #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>Примітка: Не використовуйте зрушення вправо більш ніж на 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-х біт.

Оператори мови PHP