Операторы
Побитовые операторы
Оператор |
Знак |
Синтаксис |
Дополнительная информация |
bitwise AND |
& |
$b1 & $b2 |
bit AND $b1 and $b2 |
bitwise OR |
| |
$b1 | $b2 |
bit OR $b1 and $b2 |
complement |
~ |
~$b1 |
invert $b1 (0 to 1, 1 to 0) |
bitwise XOR |
^ |
$b1 ^ $b2 |
bit XOR $b1 and $b2 |
left shift |
<< |
$b1 << 8 |
8 digits left shift $b1 |
right shift |
>> |
$b1 >> 8 |
8 digits right shift $b1 |
- Пример побитовых операторов
<?php
$b1 = 0x11; // 0001 0001
echo "$b1\r\n";
$b2 = 0x23; // 0010 0011
echo "$b2\r\n";
$b3 = $b1 & $b2; // 0000 0001, bit AND
echo "$b3\r\n";
$b3 = $b1 | $b2; // 0011 0011, bit OR
echo "$b3\r\n";
$b3 = ~$b1; // 1110 1110, NOT
echo "$b3\r\n";
$b3 = $b1 << 1; // 0010 0010, left shift 1 digit > double
echo "$b3\r\n";
$b3 = $b1 >> 1; // 0000 1000, right shift 1 digit > half
echo "$b3\r\n";
?>
[result]
17
35
1
51
-18
34
8
- Сдвиг влево:
Биты, добавленные левой операцией, всегда 0.
<?php
$b1 = 0xFFFFFFFFFFFFFFFF; // -1
$b2 = $b1 << 1; // 0xFFFFFFFFFFFFFFFE (added bit is 0)
echo "$b2";
?>
[result]
-2
- Сдвиг вправо:
Биты по сдвигу правой операции всегда одинаковы со знаковым битом.
<?php
$b1 = 0xFFFFFFFFFFFFFFFF; // -1
$b2 = $b1 >> 1; // 0xFFFFFFFFFFFFFFFF (added bit is 1)
echo "$b2";
?>
[result]
-1