HOWTO · Python

Converti Int in binario in Python

Questo tutorial dimostrerà come convertire un intero in binario in Python

In questa pagina

La funzione integrata bin() di Python è il modo più rapido per convertire un intero in una stringa binaria. Usa format() o la formattazione di stringhe se vuoi le cifre senza il prefisso 0b; l’esempio sulla manipolazione dei bit mostra come comporle manualmente.

Convertire un intero in binario in Python con bin()

Passa un intero a bin(). La funzione restituisce una stringa le cui cifre binarie sono precedute dal prefisso 0b, che identifica la rappresentazione in base 2.

value = 16
binary = bin(value)
print(binary)
0b10000

Per un intero negativo, bin() colloca - prima del prefisso, come in bin(-10). Il risultato è una stringa: usala direttamente per visualizzare il valore oppure analizzala solo se la tua applicazione ha bisogno di un valore numerico.

Convertire un intero in binario senza il prefisso 0b con format()

Passa l’intero e lo specificatore di formato b a format() per ottenere solo le cifre binarie. Questo specificatore seleziona la base 2; a differenza di bin(), il risultato non include 0b. Qui format() è la funzione integrata, così come bin() è una funzione integrata e non un metodo; restituisce la rappresentazione con prefisso descritta sopra.

value = 10
binary_digits = format(value, "b")
print(binary_digits)
1010

Per gli interi negativi, la stringa formattata contiene un segno meno iniziale seguito dalle cifre binarie del valore assoluto. Per aggiungere zeri iniziali, usa una larghezza come format(10, "08b"); la larghezza comprende le cifre e l’eventuale segno. È una larghezza minima, quindi un valore che richiede più cifre non viene troncato.

Convertire un intero in binario in Python con la formattazione di stringhe

Il metodo str.format() usa lo stesso specificatore di formato b. È utile quando vuoi inserire il valore in una stringa più ampia. Nell’esempio, l’etichetta visibile Value: rimane in inglese. Una f-string offre un’alternativa più breve.

value = 15
formatted = "Value: {:b}".format(value)
f_string = f"Value: {value:b}"
print(formatted)
print(f_string)
Value: 1111
Value: 1111

Per aggiungere zeri alle cifre binarie fino a una larghezza minima, inserisci una larghezza prima di b, per esempio {:08b} o {value:08b}. Entrambe le forme mantengono il segno degli interi negativi e portano il campo formattato alla larghezza minima richiesta; il segno conta ai fini di tale larghezza.

Convertire un intero in binario manipolando i bit

Una conversione manuale può leggere ripetutamente il bit meno significativo con & 1 e poi spostare il valore assoluto a destra con >>. Poiché i bit vengono raccolti da destra verso sinistra, inverti il loro ordine per ottenere le cifre binarie. La funzione ausiliaria qui sotto gestisce esplicitamente lo zero e rappresenta un intero negativo con un segno meno seguito dalle cifre binarie del suo valore assoluto: segue quindi la convenzione di visualizzazione con segno e valore assoluto di Python, non una rappresentazione in complemento a due a larghezza fissa.

def int_to_binary(value):
    if value == 0:
        return "0"

    sign = "-" if value < 0 else ""
    magnitude = abs(value)
    bits = []

    while magnitude:
        bits.append(str(magnitude & 1))
        magnitude >>= 1

    return sign + "".join(reversed(bits))

for number in (15, 0, -10):
    print(int_to_binary(number))
1111
0
-1010

Questo approccio illustra l’estrazione dei bit, mentre bin() e format() sono scelte più semplici per le normali conversioni. Il ciclo si interrompe quando nel valore assoluto non restano bit; il caso esplicito per zero fornisce la sua unica cifra binaria. Poiché converte il valore assoluto e aggiunge il segno separatamente, non pretende di produrre una rappresentazione in complemento a due a larghezza fissa. Quando scambi dati binari con un protocollo o un’interfaccia hardware, specifica esplicitamente larghezza e rappresentazione.