Funzioni bitwise con Python
Updated at: 22/07/2014


Essendo Python un linguaggio con aritmetica a virgola mobile non è immediatamente semplice lavorare con variabili a dimensione finita (in bit) Gli operatori operatori bitwise implementati di base sono:
  • AND binario - simbolo &
  • OR binario - simbolo |
  • XOR binario - simbolo ^
  • Complemento a 1 - simbolo ~
  • Shift binario a sinistra - simbolo <<
  • Shift binario a destra - simbolo >>
Gli operatori che necessitano di particolare attenzione sono gli ultimi 3. Per visualizzare il numero come sequenza di bit di lunghezza fissata, utilizzare la funzione format() a=5 print format(a,'04b') >>0101 Complemento a 1 Questo operatore inverte i valori dei bit del numero. Tuttavia, poichè il numero di cifre degli int è indefinito, la rappresentazione in Python di un intero è la seguente: a=5 Ipotizzando di voler lavorare con 4 bit, a è pari a 0101. Per Python questo è equivalente a 0...000101 con un numero indefinito di 0 b=~a b dovrebbe essere pari a 1010 ovvero 10, ma per Python il complemento a 1 è pari a 1...111010, ovvero un numero indefinito. La sua rappresentazione standard sarà quindi -5. Per ottenere esattamente 10 è necessario mettere il risultato in AND con il numero più grande rappresentabile con il numero di bit in uso, nel nostro esempio 15 -> 1111 b=(~a)&15 print format(b,'04b') >>1010