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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 12: Рядок 12:
 
   <li>0000 0000 0000 0000 0000 0000 0000 0100 - це 4;</li>
 
   <li>0000 0000 0000 0000 0000 0000 0000 0100 - це 4;</li>
 
   <li>0000 0000 0000 0000 0000 0000 0000 0101 - це 5;</li>
 
   <li>0000 0000 0000 0000 0000 0000 0000 0101 - це 5;</li>
   <li>...</li>
+
   ...
 
   <li>0000 0000 0000 0000 0000 0000 0000 1111 - це 15;</li>
 
   <li>0000 0000 0000 0000 0000 0000 0000 1111 - це 15;</li>
   <li>...</li>
+
   ...
 
</ul>
 
</ul>
  

Версія за 10:21, 21 квітня 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-х біт.