Écrivez un programme qui lit un entier positif ou nul, puis l'affiche en base binaire.
0 <= N <= 100 000 000
, où N
est le nombre fourni en entrée.entrée :
9
sortie :
1001
entrée :
126
sortie :
1111110
def main(): n = int(input()) if n == 0: print(0) return binaire = [] while n != 0: binaire.append(n&1) n >>= 1 for x in binaire[::-1]: print(x, end="") print() main()
Il ne faut pas oublier le cas $n = 0$.
Pour obtenir le bit de poids faible de $n$, on peut faire n&1
qui correspond à un 'et logique bit-à-bit' ; c'est plus rapide que faire n%2
qui donne la même réponse.
Pour obtenir les autres bits, on peut faire n >>= 1
qui décale $n$ de 1 rang vers la droite ; c'est plus rapide que faire n //= 2
qui donne la même réponse.
Il existe une fonction incluse dans Python pour la conversion, il s'agit de bin
, mais elle commence l'affichage par 0b
qu'il faut enlever pour notre problème.
n = int(input()) print(bin(n)[2:])
>>> bin(6) 0b110
bin
renvoie une chaîne de caractère, et on peut obtenir la tranche du 2ᵉ jusqu'à la fin avec [2:]