Binärzahlen multiplizieren

gzm

Neues Mitglied
Hallo,

ich muss ein Programm schreiben, welches zwei positive Binärzahlen beliebiger Länge einliest, diese in der Binärrepräsentation multipliziert und das Produkt als Binärzahl ausgibt.

Ich bin leider noch sehr am Anfang und bekomme es nicht richtig hin. Kann mir jemand helfen wie ich das am besten machen könnte?

Mit freundlichen Grüßen

gzm
 
Was hast Du denn schon versucht? Wie sollte eine solche Multiplikation den ablaufen? Kannst Du den bisherigen Code einmal zeigen und uns sagen, wo Du Probleme hast?
 
Also ich sollte so etwas schon mal machen, nur mit einer Addition. Hatte mir gedacht, ich änder diesen Code bisschen um. Hat aber nicht geklappt. Und dann habe ich erfahren, dass dieser Code zwar den Zweck erfüllt, aber nicht ganz den Anforderungen entspricht. Jetzt stehe ich voll auf dem Schlauch. Ich zeig dir mal wie mein Additions-Code aussieht:
Java:
import java.math.BigInteger;

public class addBinaer {

    public static void main(String args[]) {

        String s = "10101 0100";

        String[] parts = s.trim().split("\\s+");
        BigInteger sum = BigInteger.ZERO;

        for (String part : parts) {
            System.out.printf("+%30s\n", part);

            sum = sum.add(new BigInteger(part, 2));
        }

        System.out.printf("\n=%30s\n", sum.toString(2));
    }
}
Es erfüllt zwar den Zeck, aber da fehlt zb die Eingabe über die Konsole (was mir rein gar nichts sagt. Hatte das noch nie so im Unterricht)


und vielen Dank für deine Antwort. 🙂
 
Zuletzt bearbeitet von einem Moderator:
Also was sind denn die Anforderungen genau?

Ich wäre jetzt auch davon ausgegangen, dass es sich bei der Aufgabe darum drehen würde, die Binärzahlen zu per Code zu multiplizieren, indem man mehrere Zahlen addiert. Sozusagen ein "schriftliches Multiplizieren" per Code.

Ebenso stellt sich mir die Frage, wie Ihr Binärzahlen darstellen wollt und was Ihr da bisher so gewohnt seid. BigInteger kann durchaus gehen, wobei mir dies etwas suspekt ist. Man könnte so eine Zahl z.B. als ein Array von booleans auffassen. Dann hätte man so die ganzen 0 (false) und 1 (true) mit entsprechenden Stellen.

Man kann es aber auch einfach wirklich als Zahlen verwenden, d.h. statt die bits separat zu speichern, werden diese in Gruppen gespeichert (also sozusagen die Bytes einzelnd) oder gar als ganze Integer. Dann würde alles darauf hinaus laufen, dass man normale Integer-Zahlen verwendet und halt nur aus einem int result = zahl1 * zahl2; einen Aufruf mit Funktion macht: int result = multiplicate(int zahl1, int zahl2) und dort halt die Multiplikation über mehrere Additionen abbildet.

Aber das ist etwas, das Ihr bestimmt im Unterricht schon hattet und das du so genauer wissen müsstest. Ebenso ist halt wichtig, um was es bei dieser Aufgabe genau gehen soll. Für was soll euer Verständnis gestärkt werden? Was sollt ihr begriffen haben?
 
Die Eingabe über die Konsole kannst du mit dem Scanner machen.

Java:
import java.util.Scanner;

Scanner scanner = new Scanner(System.in);

String s = scanner.next();

und bitte den code immer in [ CODE ] [ /CODE ] setzen
 

Zurück
Oben