Bonjour à tous
Voila je voudrais faire un algo qui convertit la partie fractionnelle d’un
nombre de la base 10 vers la base 2. Vérifier que l’algorithme ne rentre pas dans
une boucle infinie, même avec les nombres comme 0.3
Merci de m'aider
Version imprimable
Bonjour à tous
Voila je voudrais faire un algo qui convertit la partie fractionnelle d’un
nombre de la base 10 vers la base 2. Vérifier que l’algorithme ne rentre pas dans
une boucle infinie, même avec les nombres comme 0.3
Merci de m'aider
Il faut pour cela définir a priori une précision, car si le développement décimal binaire du nombre est infini...
En fait c'est de la dichotomie à répétition:
Soit x dans l'intervalle [0,1[
On compare x avec 0.5 si x>0.5 a0=1
Puis on recommence avec 2*(x-0.5*a0) pour trouver a1 et ainsi de suite.
On détermine ainsi les décimales jusqu'à un ordre n fixé à l'avance.
Merci
Voila ce que j'avais fait comme ebauche
Variable
Nbbit , nombre de bit sur lequel nous voulons representer notre valeur
PF, partie fractionnel
R , Resultat
B, suite de chiffre pour la partie frationnel en base 2
Ecrire PF
Lire PF
R = 2 x PF
Pour i : 0 à nbbit
B(i) = R(0) ; B(i) i represente l'indice de position de la suite et R(0) est le chiffre d'indice 0 du resultat qui soit 1 ou 0
R = 2 x PF de R
faire i suivant
Est ce correct ? Merci encore
Excuse moi mais je ne sais pas lire les algo en pseudo-code ou en pseudo-pseudo code.
Voici la traduction dans un langage simple et expressif de l'algo que j'ai décrit en français
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 # -*- coding: utf-8 -*- # To change this template, choose Tools | Templates # and open the template in the editor. __author__="gilles" __date__ ="$30 juin 2010 20:17:30$" def devdecbinaire (x,n): """x est un nombre dans [0,1[ et n un entier Retourne le développement binaire de x avec n 'décimales' binaires""" DV=[] for i in xrange(0,n): if x>=0.5: a=1 else: a=0 DV.append(a) x=x-0.5*a x=2*x return DV if __name__ == "__main__": print devdecbinaire(0.3,10) """Résultat de l'éxecution:[0, 1, 0, 0, 1, 1, 0, 0, 1, 1]"""
merci pour ton aide