Exercice conversion décimal vers binaire

Fermé
BD5 - Modifié par BD5 le 2/11/2014 à 11:33
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 - 23 nov. 2014 à 00:52
Salut! Je suis débutante sur Python et je sèche complètement sur un exercice que j'ai à faire sur python qui consiste à créer un PROGRAMME qui permette de convertir un nombre entier positif de décimal en BINAIRE, en donnant les calculs intermédiaires de la méthode des soustractions successives. Je ne sais pas si j'ai été claire en résumant l'exercice, mais voici l'énoncé :

Enoncé:

On se propose d'écrire un programme en Python permettant de donner les calculs intermédiaires (méthodes des soustractions) pour convertir un nombre entier positif de décimal en binaire.
Il est possible d'utiliser le module math mais en aucun cas, on ne pourra utiliser des fonctions comme bin().
1) Réaliser un programme qui permet à l'utilisateur d'entrer un nombre entier positif ou nul. Ce nombre sera alors étape par étape (c'est-à-dire à chaque tour de boucle) converti en binaire et pour chaque étape, les soustractions effectuées seront indiquées.

Enfin, on affiche le résultat final.
Pour le confort de l'utilisateur, au cas où le nombre à traiter SERAIT très grand, on indiquera par une phrase que l'on est arrivé à la fin du traitement (voir exemples ci-dessous).

Contraintes:
? On veillera à obtenir un résultat le plus proche possible des exemples MONTRÉS.
? On n'utilisera aucune fonction de conversions de Python, comme bin(), hex()...
? Dans cette question, on n'utilisera aucun tableau (liste ou autres...) pour stocker les résultats.

Exemple:
Entrez un nombre entier: 125
125 -2** 6 = 61
61 -2** 5 = 29
29 -2** 4 = 13
13 -2** 3 = 5
5 -2** 2 = 1
1 -2** 0 = 0
fin du traitement
la valeur 125 vaut en binaire : 1111101


J'ai commencé en faisant ça, mais je ne vois pas comment afficher les soustractions

a=int(input("Entrez un nombre entier: "))
x=15
while a>0:
while 2**x>a:
x=x-1
a=a-2**x
print(a)


Et indépendamment, j'ai une très légère idée de comment afficher le nombre en binaire, mais je ne sais pas comment l'intégrer à la première partie :
while a>0:
while 2**x>a:
x=x-1
if 2**x>a:
print("0",end="")
else:
print("1",end="")



A voir également:

1 réponse

Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
23 nov. 2014 à 00:52
Bonjour,

pour l'affichage il te faut tout convertir en chaine de caractère c'est le plus simple, en reprenant ton code voilà ce que ça donne :
a=int(input("Entrez un nombre entier: "))
x=15
while a>0:
while 2**x>a:
x=x-1
print str(a)+'-2**'+str(x)+'='+str(a-2**x)
a=a-2**x
0