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 ?>
Példa | Név | Eredmény |
---|---|---|
$a & $b | És | Ott lesz '1' az eredményben, ahol $a és $b mindegyikében az a bit '1'-es. Minden más biten '0'. |
$a | $b | Vagy | Ott 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 ^ $b | Kizáró vagy | Ott 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] |
~ $a | Nem | $a összes bitjét invertálja |
$a << $b | Eltolá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 >> $b | Eltolá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!]) |
Warning
32 bites rendszeren ne végezz 32 bitnyinél nagyobb jobbratolást. Ne végezz balratolást olyankor, amikor az 32 bitnél hosszabb számot eredményezne.