IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Conversion d'un nombre binaire en décimal


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut Conversion d'un nombre binaire en décimal
    Salut ,j'ai fait un programme qui convertis un nombre binaire en decimal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    System.out.println("donner le nombre à convertir:");
    		String nb=lire.next();
    		int decimal=0,conv;
     
    		int longueur=nb.length();
    		char []t=nb.toCharArray();
    		for(int i=0;i<t.length;i++){
    			conv=t[i];
    			decimal+=conv*puissance(2,longueur);
    			longueur--;
    		}
    Mais cela donne un resultat qui n'est pas exacte.SVP j'ai besoin de votre aide...

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ta chaine contient des caractères "0" ou "1" ?
    Le problème c'est que tu utilises la valeur ASCII des caractères, et non leur valeur numérique en terme de caractère. Tu dois d'abord faire une conversion "caractère ASCII" -> chiffre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut grungy-soul
    Ma chaine contient un nombre binaire composé des 0 et 1.Et pour la conversion
    j'ai affecté la chaine à un variable de type entier pour que ça soit des entiers,mais je vois que ça marche pas.Si non vous pouvez me proposez une méthode SVP...

  4. #4
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    System.out.print("\ndonner le nombre à convertir : ");
    		String nb=lire.next();
    		long decimal=0;
     
    		int longueur=nb.length();
    		char []t=nb.toCharArray();
    		for(int i=0;i<t.length;i++){
    			if(t[i]=='1')decimal+=1;
                            decimal = decimal<<1;
    		}
    à tester
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  5. #5
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 247
    Points : 293
    Points
    293
    Par défaut
    Pourquoi réinventer la roue...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int monDecimal = Integer.parseInt("maChaineBinaire",2);
    Et voila comment convertir une chaine binaire en decimal

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 83
    Points : 59
    Points
    59
    Par défaut grungy-soul
    merci,mais j'ai déjà utlisé cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Integer.parseInt(String.valueOf("mon caractere"))
    et ca marché.

  7. #7
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    ce n'est pas une question de reinventer la roue ou quelque chose du genre, c'est juste question de performance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	long nb1 = System.currentTimeMillis();
     
    	long monDecimal;
     
    	for (int i=0; i < 10000000;i++)
    		 monDecimal = Integer.parseInt("1110110111111011",2);
     
    	long nb2 = System.currentTimeMillis() - nb1;
     
    	System.out.println(nb2);
    ça affiche 3297 à 3281

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	long nb1 = System.currentTimeMillis();
     
    	long monDecimal;
     
    	for (int i=0; i < 10000000;i++)
    		 monDecimal = getNumber("1110110111111011");
     
    	long nb2 = System.currentTimeMillis() - nb1;
     
    	System.out.println(nb2);
     
    public long getNumber(String nb){
    		long decimal=0;
     
    		int longueur=nb.length();
    		char []t=nb.toCharArray();
    		for(int i=0;i<t.length;i++){
    			if(t[i]=='1')decimal+=1;
                            decimal = decimal<<1;
    		}
    		return decimal;
    	}
    ça affiche 1625 à 1625.

    juste une histoire de performance

    cdlt
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  8. #8
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 247
    Points : 293
    Points
    293
    Par défaut
    Ok j'avais pas compris que c'était une question de performance...
    Le problème quand même avec ta méthode c'est que tu gères aucune exception,
    si le nombre est trop grand pour être un long, si le nombre n'est pas un binaire, etc... d'où la différence de performance.

    Mais si c'est vraiment que la perf qui est recherché, ton programme est très bien alors

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion d'un nombre binaire en chaine
    Par etudiante-m dans le forum Débuter
    Réponses: 2
    Dernier message: 25/02/2012, 00h33
  2. Réponses: 4
    Dernier message: 15/11/2011, 16h43
  3. Algo pour convertir un nombre binaire en décimal
    Par Eole92 dans le forum Général Python
    Réponses: 12
    Dernier message: 13/11/2011, 12h32
  4. Réponses: 3
    Dernier message: 17/10/2011, 21h27
  5. [TPW] Conversion d'un nombre décimal en binaire
    Par thimo2 dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 10/04/2009, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo