Gli operatori di shift in Python

Nel linguaggio Python gli operatori di shift ti permettono di spostare i bit di un certo numero di posizioni a sinistra o a destra.

Quando utilizzi gli operatori di shift è molto utile avere già familiarità con la rappresentazione binaria dei numeri.

Esistono due operatori di shift principali in Python:

Operatore di shift a sinistra (`<<`)

Questo operatore sposta i bit di un certo numero di posizioni verso sinistra.

num << n

Dove "num" è il numero binario da considerare mentre "n" è il numero delle posizioni da spostare verso sinistra.

Ecco un esempio pratico.

Considera il numero venti che in binario è "101"

x=5

Sposta i bit verso sinistra di due posizioni.

y = x << 2

In questo caso Python aggiunge due zeri come bit meno significativi al numero binario che da "101" diventa "10100"

Ora stampa il contenuto della variabile y.

print(y)

Python visualizza il numero 20, che è l'equivalente decimale del numero binario "10100".

20

Ricorda che spostare i bit di n posizioni verso sinistra, equivale a moltiplicare il numero per 2n.

Ad esempio, l'operazione di shift y = x << 2 equivale all'operazione aritmetica y = x·22

In questo caso x=5, quindi y=5·22=5·4=20

Operatore di shift a destra (`>>`)

Questo operatore sposta i bit di un numero specificato di posizioni verso destra.

num << n

Dove "num" è il numero binario da considerare mentre "n" è il numero delle posizioni da spostare verso destra.

Ti faccio un esempio per spiegare meglio come funziona l'operazione di shifting.

Assegna il numero 20 alla variabile "x".

x=20

In binario il numero decimale 20 corrisponde al numero binario "10100"

Adesso sposta i bit di due posizioni verso destra.

y = x >> 2

In questo caso Python elimina le ultime due cifre del numero binario che da "10100" diventa "101".

Ora stampa il contenuto della variabile y

print(y)

Python visualizza il numero 5 che in binario è "101".

5

A questo punto dovresti aver acquisito familiarità con i due operatori di shift del linguaggio Python.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin