HOWTO · Python
Comment convertir l'Int en binaire en Python
Ce tutoriel montre comment convertir un entier en binaire en Python
Sur cette page
La fonction intégrée bin() de Python est le moyen le plus rapide de convertir un entier en chaîne binaire. Utilisez format() ou le formatage de chaînes pour obtenir les chiffres sans le préfixe 0b ; l’exemple de manipulation des bits montre comment les construire manuellement.
Utiliser bin() pour convertir un entier en binaire en Python
Appelez bin() avec un entier. La fonction renvoie une chaîne dont les chiffres binaires suivent le préfixe 0b, qui indique une représentation en base 2.
value = 16
binary = bin(value)
print(binary)
0b10000
Pour un entier négatif, bin() place - avant le préfixe, comme dans bin(-10). Le résultat est une chaîne : utilisez-la directement pour l’affichage, ou convertissez-la en valeur numérique uniquement si votre application en a besoin.
Utiliser format() pour convertir un entier en binaire sans le préfixe 0b
Passez l’entier et le spécificateur de format b à format() pour obtenir uniquement les chiffres binaires. Ce spécificateur sélectionne la base 2 ; contrairement à bin(), le résultat ne contient pas 0b. Ici, format() est la fonction intégrée ; bin() est également une fonction intégrée, et non une méthode, et renvoie la représentation préfixée décrite ci-dessus.
value = 10
binary_digits = format(value, "b")
print(binary_digits)
1010
Pour les entiers négatifs, la chaîne formatée commence par un signe moins, suivi des chiffres binaires de la valeur absolue. Pour ajouter des zéros en tête, utilisez une largeur telle que format(10, "08b") ; cette largeur compte les chiffres et, le cas échéant, le signe. Il s’agit d’une largeur minimale : une valeur qui nécessite davantage de chiffres n’est pas tronquée.
Utiliser le formatage de chaînes pour convertir un entier en binaire en Python
La méthode str.format() utilise le même spécificateur de format b. Elle est pratique pour insérer la valeur dans une chaîne plus longue. L’exemple affiche l’étiquette Value: en anglais, telle quelle, avant la valeur binaire. Une f-string offre une syntaxe plus concise.
value = 15
formatted = "Value: {:b}".format(value)
f_string = f"Value: {value:b}"
print(formatted)
print(f_string)
Value: 1111
Value: 1111
Pour compléter les chiffres binaires jusqu’à une largeur minimale, ajoutez une largeur avant b, par exemple {:08b} ou {value:08b}. Les deux formes conservent le signe des entiers négatifs et complètent le champ formaté jusqu’à la largeur minimale demandée ; le signe compte dans cette largeur.
Convertir un entier en binaire par manipulation des bits
Une conversion manuelle peut lire à plusieurs reprises le bit de poids faible avec & 1, puis décaler la valeur absolue vers la droite avec >>. Comme ces bits sont recueillis de droite à gauche, inversez leur ordre pour former les chiffres binaires. La fonction auxiliaire ci-dessous traite explicitement zéro et représente un entier négatif par un signe moins suivi des chiffres binaires de sa valeur absolue. Cela correspond à la convention d’affichage signe et valeur absolue de Python, et non à une représentation en complément à deux de largeur fixe.
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
Cette approche illustre l’extraction des bits ; pour une conversion courante, bin() et format() sont plus simples. La boucle s’arrête lorsque la valeur absolue ne contient plus de bits ; le cas particulier de zéro fournit son unique chiffre binaire. Comme la fonction convertit la valeur absolue puis ajoute le signe séparément, elle ne prétend pas produire une représentation en complément à deux de largeur fixe. Lors d’un échange de données binaires avec un protocole ou une interface matérielle, choisissez explicitement une largeur et une représentation.