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 :

[Projet][Débutant]mon projet: realiser une calculatrice binaire avec interface


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 46
    Points
    46
    Par défaut [Projet][Débutant]mon projet: realiser une calculatrice binaire avec interface
    Bonjour à tous,
    je suis débutant en Java, le theorie ne me suffit plus car je comprends tout mais les exercices me possent probleme.
    j'ai un projet personnel a faire: realiser une calculatrice binaire.. qui aura deux fonctions; tout comme la calculatrice de windows
    1. convertir un chiffre decimal en binaire
    2. faire des operations avec les chiffres en binaire.

    je compte faire l'interface graphique avec jbuilder mais tout d'abord j'aimerai savoir comment je peux faire, est ce un projet faisable?
    de quoi aurais je besoin pour commencer? des librairies particulieres? ou methodes deja existantes? ainsi je ne me lance pas dans la recherche d'algorithmes inutiles

    merci de votre réponse,

    mario

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut Re: mon projet: realiser une calculatrice binaire avec inter
    Citation Envoyé par mariogarcia
    Bonjour à tous,
    je suis débutant en Java, le theorie ne me suffit plus car je comprends tout mais les exercices me possent probleme.
    il y a comme une petite contradiction ici....
    j'ai un projet personnel a faire: realiser une calculatrice binaire.. qui aura deux fonctions; tout comme la calculatrice de windows
    1. convertir un chiffre decimal en binaire
    2. faire des operations avec les chiffres en binaire.

    je compte faire l'interface graphique avec jbuilder mais tout d'abord j'aimerai savoir comment je peux faire, est ce un projet faisable?
    faisable,oui mais pas en tant que premier programme en java.
    de quoi aurais je besoin pour commencer? des librairies particulieres? ou methodes deja existantes? ainsi je ne me lance pas dans la recherche d'algorithmes inutiles
    le jdk1.5 devrait amplement suffire à ton projet.pour les algo c'est à toi de les faire mais rien de bien compliqué.Si tu as des questions là dessus,tu peux poster dans le forum algorithme,on se fera une joie de t'aider
    Bon courage

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    Toutes les operations binaires ou presque sont presentes dans le language grace aux operateurs : & (AND), | (OR), ^ (XOR), ~(COMPLEMENT), << (LEFT_SHIFT), >> (RIGHT_SHIFT), ...
    Liste complete des operateurs Java.
    Comportement des operateurs bit-a-bit, de complement et de decalage.

    Attention TOUS ces operateurs fonctionnent uniquement sur des entiers 32-bits (leur resultat est un entier meme s'ils sont appliques sur des nombres plus gros). Pour des operations sur des nombres plus grands (long) il te fraudra faire a ta sauce (probablement en travaillant par morceaux ou alors en travaillent directement sur la chaine de characteres contenant la representation binaire du nombre).

    Les classes Integer, Long et Short contiennent la methode toBinaryString() qui retourne une chaine de charactre avec la representation binaire du nombre (la chaine ne contient donc que des '0' et des '1'). Ca pourra t'etre utile pour ton affichage.
    Les classe Float et Double disposent des methodes floatToIntBits(), floatToRawIntBits(), doubleToLongBits() et doubleToRawLongBits().


    Pour les classes BigDecimal et BigInteger il faut voir avec les methodes existantes dans ces classes tant pour les operations tant que pour la representation binaire.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 46
    Points
    46
    Par défaut
    en fin, j'ai déja fait quelques petits exercices en java mais rien de tres grand.. le probleme est que je ne suis pas tres doué en programmation et ce malgré le fait que c'est un des sujets qui me passionné le plus.
    je vais lire la documentation et me renseigner et je reviendrai..
    Merci d'avance.
    mario

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Tobinary{
     public static void main(String args[]){
       int intBase10= 2;
       String intBase2 = Integer.toBinaryString(intBase10);
       System.out.println(intBase2);
     }
    }
    ce programme convertit déja un nombre décimale en un binaire, le problem est que si je comprends bien c'est un String, donc on ne peut pas faire des opération aritmetiques avec lui?
    intBase2 est donc une chaine de caracteres... si je fais un parseInt() ce sera un decimal?
    merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 100
    Points
    100
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int i = Integer.parseInt("101",2);
    Je pense que tu as tout maintenant...

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    en plus la representation binaire string n'est vraiment utile que :
    - pour l'affichage.
    - pour les calculs sur des mots de taille > 32-bits.

    Pour une gestion avec des entiers normaux tu peux tres bien faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int i1 = 1;
    int i2 = 2;
     
    int i3 = i2 & i1;
    int i4 = i2 | i1;
    int i5 = i2 ^ i1;
    int i6 = ~i2;
    int i7 = i2 << 1;
    int i8 = i2 >> 1;
    int i9 = i2 <<< 1;
    int i10 = i2 >>> 1;
    ...
    Pour ca pas besoin de se prendre la tete donc.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 855
    Points
    1 855
    Par défaut
    Pour développer ce qu'a dit Bouye : un nombre c'est un nombre, décimal ou binaire ne sont que des façons d'écrire ce nombre. Vous n'avez pas besoin de convertir pour faire les calculs. De toute façon, les microprocesseurs travaillent en binaire. On pourrait vouloir travailler avec des chiffres romains que ça ne changerait rien. En somme le concept de nombre est indépendant de son affichage.
    Décimal, binaire, c'est la représentation lisible, l'affichage. Ce qu'on voit à l'écran n'est pas un nombre, c'est une chaîne de caractère. La seule complication, c'est que Java affiche / lit les nombres en décimal par défaut. Pour afficher / lire en décimal, il faut donc créer / interpréter explicitement les chaînes de caractères. Quand vous utilisez directement les décimaux, Java fait aussi la conversion chaîne - nombre, la seule différence, c'est qu'il la fait implicitement tout seul comme un grand.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par bouye
    en plus la representation binaire string n'est vraiment utile que :
    - pour l'affichage.
    - pour les calculs sur des mots de taille > 32-bits.

    Pour une gestion avec des entiers normaux tu peux tres bien faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int i1 = 1;
    int i2 = 2;
     
    int i3 = i2 & i1;
    int i4 = i2 | i1;
    int i5 = i2 ^ i1;
    int i6 = ~i2;
    int i7 = i2 << 1;
    int i8 = i2 >> 1;
    int i9 = i2 <<< 1;
    int i10 = i2 >>> 1;
    ...
    Pour ca pas besoin de se prendre la tete donc.
    tu vas surement me prendre par un con mais je ne comprends pas ce que ce code que tu m'as proposé fonctionne.
    si je comprends bien bugfactory je peux faire la somme en decimale... donc faire deux plus deux=4 et ce serait la meme chose? ke vais essayer maintenant.. merci

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    Aille !

    Pourtant tu disais :
    faire des operations avec les chiffres en binaire.
    Mais faudrait peut-etre connaitre les operatione binaire...
    Dis moi tu ne parlais pas des operations arithmetique (+, -, *, /, ....) quand meme ? Parce que la y a meme pu la peine de se casser la tete.

    Bref, donc (sauf erreur de calcul car aujourd'hui a pas la tete a faire du calcul binaire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int i1 = 1;            // 0...001
    int i2 = 2;            // 0...010
     
    int i3 = i2 & i1;      // 0...000 <= 0...010 AND 0...001
    int i4 = i2 | i1;      // 0...011 <= 0...010 OR 0...001
    int i5 = i2 ^ i1;      // 0...011 <= 0...010 XOR 0...001
    int i6 = ~i2;          // 1...101 <= COMPLEMENT 0...010 
    int i7 = i2 << 1;      // 0...100 <= 0...010 LEFT_SHIFT 1
    int i8 = i2 >> 1;      // 0...001 <= 0...010 RIGHT_SHIFT 1
    int i9 = i2 <<< 1;     // 0...100 <= 0...010 LEFT_SHIFT_KEEP_SIGN 1
    int i10 = i2 >>> 1;    // 0...001 <= 0...010 RIGHT_SHIFT_KEEP_SIGN 1
    Note comme indique precedement Java ne travaille que sur des mots de 32-bits pour les operations binaires donc :

    0...001 correspont en fait a 00000000000000000000000000000001.

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 851
    Points : 22 863
    Points
    22 863
    Billets dans le blog
    51
    Par défaut
    Ah oui la j'avais pas lus jusqu'au bout...

    Rien de bien complexe pour faire des operation arithmethiques...
    Allez juste une derniere astuce sur le calcul binaire, quand on travaille sur des entiers :

    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
     
    int i1 = 1;
    int i2 = 2;
     
    int i3 = i1 + i2;
    // C'est la meme chose que :
    int i4 = i1 | i2;
     
    ////////////
     
    int i5 = i2*2;
    // C'est la meme chose que :
    int i6 = i2 << 1;
     
    ////////////
     
    int i7 = i2/2;
    // C'est la meme chose que :
    int i8 = i2 >> 1;
    Mais je doute que ca te soit utilie.
    ! Attention a ne pas generaliser (nottement l'addition marche dans ce cas bien specifique*). Pour la multiplication par 2 et la division (entiere) par 2 ca deconne si le nombre est trop grand** ou negatif***.

    * si nombres de meme signe et qu'il n'y a pas de colisions entre les bits des 2 nombres. Si collision => il faut protager la retenue = plus de calculs.

    ** ca le fait aussi avec l'operateur * bien sur et ca vient de la taille max d'un int.

    *** car le bit de signe n'est pas preserve. Voir les operateurs <<< et >>>.


    Regarde du cote de NumberFormat et DecimalFormat et les differents methodes parseXXX des classes de nombre pour faire des conversion chaine <=> nombre.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 127
    Points : 46
    Points
    46
    Par défaut
    ce que je cherche seulement est faire des opération arithmetiques +, -, /,*
    ce seront des nombres 8 bits seulement,
    elle va etre surtout etre utilisé pour convertir en binaire des nombres jusqu'a 255 inclus pas plus grand, si plus grand je lance une exception

    la retenue es un aspect important que je dois faire.. c'est là ou cela coincé le plus.

    merci d'avance

    Mario

Discussions similaires

  1. Mon site affiche une page blanche avec Firefox : Pourquoi ? Que faire ?
    Par bnoir dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 25/10/2006, 16h22
  2. importer une classe dans mon projet
    Par dietrich dans le forum Delphi
    Réponses: 1
    Dernier message: 17/07/2006, 09h57
  3. Comment inseré une image dans mon projet?
    Par Micheal1221 dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/07/2006, 14h00
  4. Réponses: 2
    Dernier message: 12/05/2006, 15h58
  5. Réponses: 2
    Dernier message: 09/05/2006, 17h28

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