É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:]