# Binärrechner in Java mit Eclipse



## Sonic51 (2. November 2010)

*Binärrechner in Java mit Eclipse*

Hallo zusammen,
ich muss für die Schule einen Binärrechner Programmieren.
Jedoch bin ich mit meinen Kenntnissen am ende, denn wir dürfen
folgene befehle nicht verwenden:

Integer.parseInt(…,2)
Integer.toBinaryString(…)

die Zahlen sollen als String eingelesen werden und erst mal auf ihre Korrektheit(1 und 0) kontrolliert werden. Das hab ich soweit hinbekommen. Nur das mit dem Rechnen klappt nicht so ganz...kann mir da BITTE jmd einen Tipp oder Denkansatz geben. Bei google finde ich nur Lösungen oder Tipps mit den Befehlen, die ich nicht verwenden darf
Ich danke euch schon mal für uere Hilfe


----------



## Bauer87 (3. November 2010)

*AW: Binärrechner in Java mit Eclipse*

Man kann einen Volladdierer nur mit *and* *or*, *not* und *if* sowie *else* programmieren, wenn man im Grunde den „Schaltplan“ der Elektronik dazu „nachbaut“: Volladdierer ? Wikipedia

Das Bauteil „=1“ entspricht einem *xor*, lässt sich also in den genannten logischen Operatoren ausdrücken.


----------



## Sonic51 (3. November 2010)

*AW: Binärrechner in Java mit Eclipse*

...es soll kein schaltplan dazu gebaut werden.
Es soll einfach nur ein Rechner sein, der zwei binäte Zahlen miteinander addiert.
Die kontrollen, ob die Zahlen korrekt eingegeben wurden, hab ich schon fertig.
Es fehlt mir nur noch eine methode, wie ich die zahlen korrekt addiert bekomme,
da wir die oben genannten funktionen nicht benutzen dürfen!


----------



## UnnerveD (4. November 2010)

*AW: Binärrechner in Java mit Eclipse*

Ich weiß gerade nicht, wobei du hängst, aber der Befehl "Integer.parseInt(zahl,2)" wandelt die eingegebene Binärzahl in einen Dezimalzahl um (meines Erachtens nach), so sollte ein richtige Aufruf sein.

int a = Integer.parseInt(zahl,2); //(die Variable zahl stellt die zuvor auf Richtigkit geprüfte Eingabe dar)
System.out.println("Die Zahl lautet:" + a);

Die Ausgabe sollte nun eine Dezimalzahl sein. Wie du nun mit diesen Zahlen weiterrechnest, sollte dann eigentlich klar sein.

Falls ich mich irre - lass es mich wissen ;D

MfG


----------



## Bauer87 (5. November 2010)

*AW: Binärrechner in Java mit Eclipse*

@Sonic51: Ich meinte nur, dass du die Schaltlogik in Code nachbilden sollst. Hier mal als (etwas dahingeschlurter) C++-Code:

```
struct sc{
    bool s; //sum
    bool c; //carry
};

sc halfadder( bool a, bool b ){
    sc op; //output
    if (a and b)
        op.c = true;
    else
        op.c = false;
    if ((a and not b) or (b and not a))
        op.s = true;
    else
        op.s = false;
    return op;
}

sc fulladder( bool a, bool b, bool c ){
    sc ha1 = halfadder(a,b); //erster Halbaddierer
    sc op = halfadder(ha1.s,c); // und Nummer zwei
    op.c = (ha1.c or op.c); //c-Leitungen verbinden
    return op;
}
```

Wenn du nur einstellige Binärzahlen addieren willst, reicht der Halfadder. Ansonsten musst du Stelle für Stelle durch deine Binärzahl gehen und jeweils den Carry der vorherigen Addition auf c im nächsten Addierer legen.


----------



## retarDeD.aNiMaL (5. November 2010)

*AW: Binärrechner in Java mit Eclipse*

Reicht es nicht, die beiden Strings von hinten nach vorne durchzugehen und wie Bauer87 schon sagte, die beiden ausgelesenen Zahlen dann XOR zu verknüpfen und sich ggf. den Übertrag zu merken? Ist doch gar nicht mal sooo schwer


----------



## Sonic51 (5. November 2010)

*AW: Binärrechner in Java mit Eclipse*

also die aufgabe lautet wie folgt:

1.) Binäraddition
Implementieren Sie eine Klasse, die die Möglichkeit bietet, zwei binäre Zahlen zu addieren. Die Binärzahlen sind dabei als String codiert, z.B. ‚‘‘101‘‘.
Implementieren Sie hierzu die Methode:

public class Binaeraddition {
     public static String addition(String zahl1, String zahl2)
}

Ein Testbeispiel könnte folgendermaßen aussehen:

String zahl1="100011100";
String zahl2="110011";
System.out.println(Binaeraddition.addition(zahl1, zahl2));

Ergebnis: "101001111"
Hinweis: Verwenden Sie hier nicht die Methoden 

Integer.parseInt(…,2), Integer.toBinaryString(…)

1.1) Fehlerhafte Eingaben

Testen Sie ihr Programm für nichtzulässige Eingaben, z.B. "123456" oder "10101r01" und verbessern Sie Ihre Lösung. Vermeiden Sie führende Nullen in der Ausgabe.

1.2) Formatierte Ausgabe

Formatieren Sie die Ausgabe so, dass die richtigen Stellen untereinander stehen. So kann man direkt das Ergebnis überprüfen.

1.3) Interaktives 

Das Programm soll nach jeder Rechnung abfragen, ob der Nutzer eine neue Rechnung starten will („R“) oder das Programm beenden will („Q“). Bei „R“ werden die Zahlen abgefragt.


Ich bin ja schon so weit, dass ich die Zeilen vertausche und der mir die letzte zeile ausrechnet, nur wenn ich dann einsetze, kommen falsche ergebnisse...also x3 wird richtig ausgerechnet die anderen nicht, wenn ich x3 einsetzen lasse...also hab ich da nur noch einen "Denk"-Fehler...


----------



## Forsaiken (6. November 2010)

*AW: Binärrechner in Java mit Eclipse*



Sonic51 schrieb:


> ...
> Ich bin ja schon so weit, dass ich die Zeilen vertausche und der mir die letzte zeile ausrechnet, nur wenn ich dann einsetze, kommen falsche ergebnisse...also x3 wird richtig ausgerechnet die anderen nicht, wenn ich x3 einsetzen lasse...also hab ich da nur noch einen "Denk"-Fehler...



Was meinst du mit x3?
Und wieso zeilen vertauschen?
Gibt es ein limit was die größe der zahl angeht oder nur max 32bit?
Mit negativ bit (gegen dem fall das die zahl limitiert ist)?

Edit:
Hier mal was für die berechnung.
Den rest solltest du aber selber hinbekommen 

http://pastebin.com/VVMXAnpD


----------



## Sonic51 (6. November 2010)

*AW: Binärrechner in Java mit Eclipse*

Das hab ich in der tat, aber ohne den link.
Td danke ich euch für die hilfe!!!


----------

