Posez votre question Signaler

Algorithme conversion binaire décimal

badboy - Dernière réponse le 28 oct. 2014 à 00:55
Bonjour,
je cherche a trouver la solution d'un algorithme qui prend en entrée une séquence de chiffres binaires et qui donne comme résultat le nombre décimal correspondant
merci de votre aide
Lire la suite 
Réponse
+2
moins plus
voici la traduction en pseudo algo
res= 0
puis= 1
Pour i = longueur (seqBin) à 0 faire
res= res + seqBin[i] *puis
puis = puis * 2 
fin pour
afficher res

ccm81 5458Messages postés lundi 18 octobre 2010Date d'inscription 4 juillet 2015 Dernière intervention - 11 févr. 2011 à 12:14
re,
l'algorithme de flo13142 commence a traiter le nombre par la droite, ce qui te fait maintenant 3 méthodes differentes,
bonne suite
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Tu prends ta séquence binaire de gauche vers la droite et tu ajoutes la valeur de chaque caractére (0 ou 1) multiplié par 2 à la puissance de la position de celui ci.
exemple avec 10010101
en partant de la gauche:
1x 2^0 = 1 x 1 = 1
0 x 2^1 = 0 x 2 = 0
1 x 2 ^2 = 1 x 4 = 4
0 x 2^ 3= 1 x 8 = 0
1 x 2^4 = 1x 16 = 16
0 x 2^5 = 1x32 = 0
0 x 2^6 = 1x64 = 0
0 x 2^7 = 1x128 = 128

soit 1 + 4 +16 +128 = 149
badboy- 10 févr. 2011 à 17:22
Merci pour ta réponse mais j'ai besoin du pseudo code de l'algorithme si c'est possible

Merci pour ton aide
Répondre
Nima- 11 juil. 2012 à 03:09
Il y a une erreur à la 4ème ligne : 0 x 2^3 = 0 x 8 = 0 (et pas 0 x 2^3 = 1 x 8 = 0)
Répondre
DMZ- 20 févr. 2013 à 19:15
il n'y a pas vraiment d'erruer dans la 4eme ligne mais plutot dans la dernier: 1X2^7 au lieu de 0x2^7
Répondre
iBRAcc!- 28 oct. 2014 à 00:55
oui Nima t'as raison, il ya une erreur à la 4eme ligne prcq ( 0 x 2^3 il est <> 1 x 8 ) et 1 x 8 = 8 pas = 0
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Utilise la fonction parseInt
System.out.println(Integer.parseInt("111111",2));

regardes ça http://sakoba.byethost13.com/2011/02/10/java-binary-to-decimal/
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir

un code (récursif) en VBA

- Len(a) donne la longueur de la chaine a
- Left(b,1) donne le 1° caratere à gauche de la chaine b
- Right(b, Len(b) - 1)) donne la queue de b (b sauf le 1° caractere)

RQ. VBA est permissif et Left(b,1) est interpreté comme un nombre donc pour un algorithme propre utiliser Valeur(xxx) lorsque xxx est une chaine

Function bin_dec(ByVal b As String) As Long
If Len(b) = 1 Then
  bin_dec = b
Else
  bin_dec = 2 ^ (Len(b) - 1) * Left(b, 1) + bin_dec(Right(b, Len(b) - 1))
End If
End Function


bonne suite
badboy- 10 févr. 2011 à 20:06
Merci a vous

c plus le code avec des si sinon, tant que, demande, afficher que je cherche

Merci de votre aide
Répondre
Fatus- 26 avril 2011 à 20:11
Bonsoir :)
Je cherche aussi une fonction récursive qui traduirait un entier passé en paramètre et codé en binaire en un nombre décimal.
Le principe ne s'éloigne pas trop de la solution que tu (ccm81) as proposé sauf que le soucis pour moi c'est que le paramètre initial est un entier et on ne doit pas utiliser de fonctions pour le convertir en chaîne ...
Est ce que quelqu'un pourrait m'aider quel que soit le language utilisé c'est surtout l'idée que je cherche.
MERCI ;)
Répondre
ccm81 5458Messages postés lundi 18 octobre 2010Date d'inscription 4 juillet 2015 Dernière intervention - 27 avril 2011 à 08:45
re
c'est encore plus simple, mais un peu moins efficace puisque le parametre en entrée est de type entier et comme il est au " format binaire" il ne pourra pas être bien "long", mais comme c'est plus pour l'esthétique que l'efficacité ...
n mod 10 est le reste de la division euclidienne de n par 10
n \ 10 est le quotient de la division euclidienne de n par 10

Public Function bintodec(ByVal n As Long) As Long
If n <= 1 Then
  bintodec = n
Else
  bintodec = n Mod 10 + 2 * bintodec(n \ 10)
End If
End Function


bonne suite
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
re

un autre algorithme non récursif, toujours en VBA, avec TANTQUE mais pas de SI,
a toi de traduire
il decrit le nombre b de la gauche vers la droite (comme l'algorithme de Horner)

Function bindec(b As String) As Long
Dim som As Long, chi As Long
som = 0                    ' initialisation du total
While Len(b) > 1           ' tant que longueur de b > 1
  chi = Left(b, 1)         ' chi = premier chiffre à gauche de b
  som = (som + chi) * 2    '
  b = Right(b, Len(b) - 1) ' on recommence avec b auquel
Wend                       ' on a enlevé le 1° chiffre
bindec = som + b           ' il reste un seul chiffre à b
End Function


bon courage
Ajouter un commentaire
Ce document intitulé «  Algorithme conversion binaire décimal  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.