Opération binaire en mode binaire et hexadécimal
Voila toujours dans mon programme de calculatrice (elle possède 4 modes qui sont basique, scientifique, binaire et hexadécimal). Je souhaiterai faire lorsque je suis en mode binaire par exemple une opération genre le "ET" entre deux chiffre binaire. Par exemple 110011 ET 00110. J'ai essayer d'implémenter le tout mais j'ai des problèmes je n'obtient pas les résultats par exemple je fais 101010 ET 101100 et j'obtiens: 1.0212111E10.
voici le code:
code lorsque l'on clique sur les boutons des opérande comme ET (boutmult) et OU (boutadd):
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| this.add(boutadd = new JButton());
boutadd.setText("+");
boutadd.setPreferredSize(new Dimension(75,75));
boutadd.setMnemonic(KeyEvent.VK_ADD);
boutadd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == boutadd){
if(clicOperateur){
calcul();
lab.setText(String.valueOf(chiffre1));
}
else{
chiffre1 = Double.valueOf(lab.getText()).doubleValue();
clicOperateur = true;
lab.setText("");
}
operateur = "+";
}
if ((e.getSource()==boutadd) && (mode.equals("binaire"))) {
chiffre3 = String.valueOf(lab.getText());
res1=Integer.parseInt(chiffre3, 2);
clicOperateur = true;
lab.setText("0");
operateur = "+";
}
}
});
this.add(boutmult = new JButton());
boutmult.setText("*");
boutmult.setPreferredSize(new Dimension(75,75));
boutmult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == boutmult){
if(clicOperateur){
calcul();
lab.setText(String.valueOf(chiffre1));
}
else{
chiffre1 = Double.valueOf(lab.getText()).doubleValue();
clicOperateur = true;
lab.setText("0");
}
operateur = "*";
}
if ((e.getSource()==boutmult) && (mode.equals("binaire"))) {
chiffre3 = String.valueOf(lab.getText());
res1=Integer.parseInt(chiffre3, 2);
clicOperateur = true;
lab.setText("0");
operateur = "*";
}
}
}); |
Code de la fonction qui fait les calculs:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| //fonction qui permet de faire les caculs avec les operateurs de base
private void calcul(){
if(operateur.equals("+")){
chiffre1 = chiffre1 +
Double.valueOf(lab.getText()).doubleValue();;
resultat=chiffre1;
lab.setText(String.valueOf(chiffre1));
}
if(operateur.equals("-")){
chiffre1 = chiffre1 -
Double.valueOf(lab.getText()).doubleValue();
resultat=chiffre1;
lab.setText(String.valueOf(chiffre1));
}
if(operateur.equals("*")){
chiffre1 = chiffre1 *
Double.valueOf(lab.getText()).doubleValue();
resultat=chiffre1;
lab.setText(String.valueOf(chiffre1));
}
if(operateur.equals("/")){
try{
chiffre1 = chiffre1 /
Double.valueOf(lab.getText()).doubleValue();
BigDecimal bd = new BigDecimal(chiffre1);
bd= bd.setScale(15,BigDecimal.ROUND_DOWN);
chiffre1 = bd.doubleValue();
resultat=chiffre1;
lab.setText(String.valueOf(chiffre1));
} catch(ArithmeticException e) {
lab.setText("0");
}
}
//Ici on effectue les calcul lorsque l'on es dans le mode binaire
if(operateur.equals("+") && mode.equals("binaire")){ //ici Le OU inclusif
chiffre2 = res1 | Integer.parseInt(String.valueOf(lab.getText()), 2);
res=Integer.toBinaryString(chiffre2);
resultat=Double.valueOf(res);;
lab.setText(String.valueOf(res));
}
if(operateur.equals("*") && mode.equals("binaire")){ //ici le ET
chiffre2 = res1 & Integer.parseInt(String.valueOf(lab.getText()), 2);
res=Integer.toBinaryString(chiffre2);
resultat=Double.valueOf(res);;
lab.setText(String.valueOf(res));
}
}//fin fonction calcul |
Est ce que quelqu'un aurai une idée ? Désolé si le sujet n'est pas au bon endroit car vu que je fait une calculatrice en mode graphique je savais pas trop ou le mettre.