Operatori bitwise

Operatori bitwise in PHP

Gli operatori bitwise agiscono direttamente sui bit dei numeri.

Anche se possono risultare di non facile comprensione, conoscerli è importante per il loro stretto rapporto con la matematica binaria, che è la base dei computer.

Infatti mentre gli umani sono abituati a manipolare i numeri in base 10, il linguaggio macchina è in base 2, che comprende solo 2 valori: 0 (false) e 1 (true).

In PHP gli operatori che lavorano a livello di bit sono:

Operatore Descrizione Esempio
& Operatore binario. Esegue l'AND bit a bit di due numeri. Il risultato è 1 solo se entrambi i bit sono 1. $x & $y
| Operatore binario. Esegue l'OR (or inclusivo) bit a bit di due numeri. Il risultato è 1 se almeno uno dei bit è 1. $x | $y
^ Operatore binario. Esegue lo XOR (or esclusivo) bit a bit di due numeri. Il risultato è 1 solo se uno dei bit è 1, ma non tutti e due. $x ^ $y
~ Operatore unario. Inverte i bit del numero, 1 diventa 0 e viceversa. ~ $x
<< Operatore binario. Sposta i bit del primo numero a sinistra. Il secondo numero indica in numero di posizioni da spostare. Equivale a moltiplicare il numero per 2. $a << $b
>> Operatore binario. Sposta i bit del primo numero a destra. Il secondo numero indica in numero di posizioni da spostare. Equivale a dividere il numero per 2. $a >> $b

Il seguente programma mostra gli operatori bitwise all'opera:

<?php
$x = 127; // 1111111 in base 2
$y = 85; // 1010101 in base 2

var_dump(decbin($x & $y)); // string(7) 1010101
var_dump(decbin($x | $y)); // string(7) 1111111
var_dump(decbin($x ^ $y)); // string(6) 101010
var_dump(decbin(~ $x)); // string(64) 1111111111111111111111111111111111111111111111111111111110000000
var_dump(decbin($x << 1)); // string(8) 11111110
var_dump(decbin($y >> 2)); // string(5) 10101

Nell'esempio abbiamo utilizzato la funzione decbin() che converte un numero da decimale a binario, restituendo il risultato sottoforma di stringa.

Il risultato di ogni operazione viene mostrato a video tramite la funzione var_dump(), che stampa il tipo di dato (string), la lunghezza e il valore.

Guida successiva: Strutture di controllo in PHP