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

Collection et Stream Java Discussion :

trouver la représentation binaire en java


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut trouver la représentation binaire en java
    salut

    je suis débutante et j'essai de faire un programme qui lit un chiffre entier et le converti en binaire

    mon programme qui ne fonctionne pas est le suivant

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    //declaration de variables
            int nombre;
            double modulo;
            String resultat="";
     
            //Section d'entrée
           String valeur = JOptionPane.showInputDialog(null,"Veuillez saisir un nombre");
           nombre= Integer.parseInt(valeur);
           if (nombre <0)
           {
            String valeur2= JOptionPane.showInputDialog(null,"Veuillez saisir un nombre positif");
            nombre= Integer.parseInt(valeur2);
           }
     
           //Section de traitement
     
           for(int index=0;index>0;index--)
               { 
                   for(int index1=0;index1>0;index1++)
                   {
                      modulo=nombre%2; 
                      resultat = String.valueOf(modulo);
     
                   }
     
               nombre/=2;
     
               }
          JOptionPane.showMessageDialog(null, "le nombre binaire est"+resultat) ;
        }
     
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux définir "ne fonctionne pas"? Il se passe quoi quand tu lance ton programme?

  3. #3
    Membre confirmé
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Points : 595
    Points
    595
    Par défaut
    Salut,

    Voici un exemple qui peut t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       int i = 170;
     
       /* renvoie l'équivalent en binaire */
       System.out.println("Binary is " + Integer.toBinaryString(i));
       }
    en console : "Binary is 10101010"
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je pense que le but de l'exercice est d'écrire la méthode soi-même, pas d'utiliser une méthode toute faite.

    Un premier indice pour résoudre l'exercice (ce n'est pas le seul problème) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int index1=0;index1>0;index1++)
    Dans un for, la deuxième partie est le test d'arrêt de la boucle : quand la condition est fausse, on arrête de boucler. On n'entre jamais dans un for lorsque la condition d'arrêt est fausse pour la valeur d'initialisation. Essaye d'écrire les 3 premières valeurs de index1 et la valeur de la condition correspondante... que constates-tu ?

    Un second indice : le résultat final est une concaténation des différents résultats intermédiaires...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup je vais essayé de refaire ma boucle , j'avais pas bien compris le principe les boucles imbriqué dans la classe

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai une boucle infini maintenant , est ce que un do/while ne sera pas meilleur vu qu'on connais pas le nombre de fois que la boucle doit se faire?

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Peu importe un do/while, un while, un for, voire même un forEach, on peut toujours avoir une boucle infinie. Montre-nous le code, et on verra.

    Cela dit, l'algorithme le plus simple est fondé sur un while plutôt.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour,
    J'ai le sentiment que vous ne savez pas convertir du décimale en binaire à la main. C'est dommage, car dans ce cas, le résultat est simple.
    Si je penses cela, c'est que je vois que dans votre code, vous utilisez la fonction modulo ?! Cette dernière permet de récupérer le restant d'une division Euclidienne, il n'y a à mon sens pas de rapport avec la conversion d'un nombre exprimé en base décimal en une chaîne de caractère représentant son expression en base binaire. Ce que vous voulez faire en fait.
    Donc, sans vous offenser, savez-vous réaliser ce genre de conversion à la main ?
    Que ce soit le cas ou pas, voilà le résultat que je vous propose :

    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
    23
    24
    public class converter {
        public static void main(String args[]) {
            // Affichage sur 64 Bits;
            // Valeurs décimale positive la plus grande sur un ordinateur 64 Bits avec une JVM 64 Bits et en ne travaillant qu'avec les types primaires : 9007199254740991
            // En effet, si on se limite aux types primaires (int, double, float, long), on se limite aux 53 premiers de nos 64 bits.
            // Pour aller plus loin, il faut abandonner les types primaires ainsi que java.lang.Math et travailler avec les classes de java.math
            double valeurTest = 4294967295d;// Valeur max pour 32 Bits.
            int longueurBinaire = 32;
            char resultat[] = new char[longueurBinaire];
            for (int i = 0 ; i < resultat.length-1 ; i++) resultat[i] = '0';// On rempli notre tableau de caractères de '0', cela correspond à la valeur décimale 0.
            String resultatFinal;
            if (valeurTest > 0) { // Inutile de faire quoi que ce soit si la valeur vaut 0, notre tableau de caractères est déjà rempli pour ça.
                double valeur = valeurTest;
                for (int rang = resultat.length-1 ; rang >= 0 ; rang--) {
                    if (Math.pow(2, rang) <= valeur) {
                        resultat[resultat.length-1-rang] = '1';
                        valeur -= Math.pow(2, rang);
                        }
                    }
                }
            resultatFinal = new String(resultat);
            System.out.println(valeurTest + " donne en binaire sur " + longueurBinaire + " Bits : " + resultatFinal);
            }
        }
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Outre le fait que cette discussion était finie il y a cinq mois, c'est n'importe quoi.

    La manière de le faire à la main, c'est de trouver d'abord le chiffre binaire de poids le plus faible, celui le plus à droite. Puis celui à sa gauche, et ainsi de suite jusqu'à ce que le nombre qu'il nous reste à représenter vaille zéro, et que le travail soit donc terminé.

    Donc oui ça se fait en prenant le modulo du nombre par deux : ce qui nous donne le chiffre le plus à droite. Puis on divise le nombre de départ par deux et on recommence. C'est comme ça qu'on fait à la main.

    Un programmeur habitué du binaire peut à la rigueur décider, s'il ne gère que la base deux, de traiter les bits directement au lieu de faire du modulo et de la division par deux : ce sera plus efficace.

    Mais évidemment en aucun cas, on ne va utiliser Math.pow(), fonction en virgule flottante très complexe, pour un pur travail d'arithmétique entière triviale.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Vous avez entièrement raison, Thelvin.
    Je n'avais vraiment pas les yeux en face des trous hier, je ne me suis rendu compte de la date de la discussion qu'après y avoir répondu, et en me relisant, j'ai honte...
    Bref, j'ai raisonné à l'envers, comme quoi, parfois il vaut mieux se taire.
    Désolé.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. une méthode de représentation arbre binaire en java
    Par bilred dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 23/04/2009, 13h21
  2. trouver un editeur de code java
    Par haksasse dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2007, 19h00
  3. Dessiner un arbre binaire en java?
    Par zenaare dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/01/2007, 16h01
  4. représentation binaire-->entier
    Par felicity dans le forum C
    Réponses: 6
    Dernier message: 17/01/2006, 20h57
  5. CRITERIA - Représentation binaire d'un nombre décimal signé.
    Par RamDevTeam dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/08/2005, 14h56

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