Bitorientált operátorok

A bitorientált operátorok teszik lehetővé, hogy egész típusú számokon belül bizonyos biteket beállítsunk, vagy lefedjünk (maszkolás). Ha viszont az opertáron mindkét oldalán sztring típusú változó áll, akkor a bitorientált operátorok a sztringek karakterein dolgoznak úgy, hogy a karakterek ASCII kódjain végzik el a műveletet, és az eredményül adódó számot ASCII kóddal megadott karakternek értelmezi.

<?php
    echo 12 ^ 9; // '5' -öt ír ki

    echo "12" ^ "9"; // kiírja a visszaperjel karaktert (ASCII #8), mert
                     // ('1' (ASCII #49)) ^ ('9' (ASCII #57)) =  (ASCII #8)

    echo "hallo" ^ "hello"; // eredmény: #0 #4 #0 #0 #0
                            // 'a' ^ 'e' = #4
?>

Táblázat 11-3. Bitorientált operátorok

PéldaNévEredmény
$a & $bÉsOtt lesz '1' az eredményben, ahol $a és $b mindegyikében az a bit '1'-es. Minden más biten '0'.
$a | $bVagyOtt lesz '1' az eredményben, ahol $a és $b közül legalább az egyik azon a bitje '1'-es. Minden más biten '0'.
$a ^ $bKizáró vagyOtt lesz '1' az eredményben, ahol $a és $b közül csakis pontosan az egyikben '1' állt. Minden más biten '0'. [Más közelítésben ott lesz '1' az eredményben, ahol különböző bitek álltak $a-ban és $b-ben; megint más közelítésben $a azon bitjei invertálódnak, amely helyeken $b-ben '1' áll]
~ $aNem$a összes bitjét invertálja
$a << $bEltolás balra$a bitjeit $b számú bittel balra tolja (minden bitnyi eltolás 2-vel való szorzást jelent [amíg el nem fogynak a bitek, utolsó helyen előjelbit van ?!])
$a >> $bEltolás jobbra$a bitjeit $b számú bittel jobbra tolja (minden bitnyi eltolás 2-vel való egész-osztást jelent. [Vigyázz, negatív számot inkább ne tolj jobbra!])