• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Binäre und natürliche Zahlen "vermischen" ?

frogi

Spiele-Enthusiast/in
Mitglied seit
11.05.2004
Beiträge
1.352
Reaktionspunkte
0
Binäre und natürliche Zahlen "vermischen" ?

Eine Methode long addiere(long, long, int) zur Addition zweier Zahlen.

Wie das mit den Methoden funktioniert, ist jetzt kein Problem mehr ;)

Aber das:

Beispiel:

Zahldarstellung 1 = 1001 ( binär, natürlich wäre die Zahl ne 9 )
Zahldarstellung 2 = 11 ( binär, natürlich wäre die Zahl 3 )
Basis = 2

-> Durch den Ausdruck addiere(1001, 11, 2) sollen die Zahlen 9 und 3 addiert werden. Die Summer 12 soll in der binären Darstellung 1100 zurückgegeben werden.

Wie kriegt man das denn hin :confused:
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Ich würde es so versuchen:
Die übergebenen binären Zahlen vor der Addition in natürliche Zahlen umrechnen. Das Ergebnis dann wieder in eine binäre Zahl umrechnen und diese dann zurückgeben.

Bin mir jetzt nicht ganz im Klaren, ob ich dein Problem verstanden habe... :confused:
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Mothman am 09.11.2008 20:27 schrieb:
Ich würde es so versuchen:
Die übergebenen binären Zahlen vor der Addition in natürliche Zahlen umrechnen. Das Ergebnis dann wieder in eine binäre Zahl umrechnen und diese dann zurückgeben.

Bin mir jetzt nicht ganz im Klaren, ob ich dein Problem verstanden habe... :confused:

Doch hast es verstanden. Aber wie mache ich dem Progam klar, dass es binäre Zahlen in natürliche und umgekehrt umrechnet.
Das ist mir nicht ganz klar...
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Ich vermute mal, du verstehst die Aufgabenstellung nicht ganz richtig. Der dritte Parameter (Integer) soll vermutlich die Basis eines allgemeinen Stellenwertsystems darstellen.

D.h. mit addiere(11, 3, 8 ) würdest du die dezimalen Zahlen 9 und 3 oktal addieren.


Das würde zumindest mehr Sinn machen, ansonsten müsste es wohl eher addiereBinaer(long, long) heißen.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

bsekranker am 09.11.2008 21:12 schrieb:
Ich vermute mal, du verstehst die Aufgabenstellung nicht ganz richtig. Der dritte Parameter (Integer) soll vermutlich die Basis eines allgemeinen Stellenwertsystems darstellen.

D.h. mit addiere(11, 3, 8 ) würdest du die dezimalen Zahlen 9 und 3 oktal addieren.

Das würde zumindest mehr Sinn machen, ansonsten müsste es wohl eher addiereBinaer(long, long) heißen.

Stimmt, also sagen wir ich habe 2 Zahlendarstellungen in binärer Form, z.B. 1001 und 11. Das wären ja dann die natürlichen Zahlen 9 und 3.
Und meine Basis ist 2.

Dann müsste ich ja schreiben addiere(9, 3, 2).

Die Summe 12 soll aber binär in der 2er Darastellung ausgegeben werden, also 1100.

Wie geht das? Da gibt es doch bestimmt eine Formel o.ä. für? Muss ich diese Formel dann in meine Methode implementieren?

Und was hat es mit der Basis auf sich, wenn die z.B. 8 wäre, wie müsste man dann rechnen, was würde sich ändern?

Bisher hab ichs so, was natürlich erstmal noch Quark ist:

public static void main(String[] args) {

/* Berechnung der Testfaelle */

/* 1. Testfall */

long zahl1;
long zahl2;
int basis;

zahl1 = 1001;
zahl2 = 11;
basis= 2;

System.out.println(addiere(zahl1, zahl2, basis));

}

public static long addiere(long zahl1, long zahl2, int basis){
return zahl1 + zahl2 + basis;
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Keiner einer Idee?
 
AW: Binäre und natürliche Zahlen "vermischen" ?

frogi am 10.11.2008 20:30 schrieb:
Keiner einer Idee?
Ich helfe dir gerne bei Java-spezifischen Problemen, aber einen kompletten Algorithmus liefere ich dir bestimmt nicht, vor allem da es nach einer Uni- oder Schulaufgabe aussieht. Auf den Lösungsansatz musst du schon selbst kommen.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

frogi am 10.11.2008 13:13 schrieb:
zahl1 = 1001;
zahl2 = 11;
Am elegantesten wäre wohl eine Klasse BinNum, aber das wäre mir jetzt zu anstrengend.
Auf die schnelle würde ich einfach zwei Funktionen machen, die zwischen den Zahlensystemen umrechnen.

int BinToDec(int n) {
String number = new String().valueOf(n);
int dec = 0;
for (int i = 0; i <= number.length() - 1; i++) {
dec += (number.charAt(i) - '0') * Math.pow(2, number.length() - 1 - i);
}
return dec;
}

int DecToBin(int n) {
int bin = 0;
while (n > 0) {
bin = bin * 10 + n % 2;
n /= 2;
}
return bin;
}

so, sollte es gehen. aber wenn man sich einfach mal mathematisch überlegt kann man auch selbst darauf kommen. gerade BinToDec ist ja fast trivial einfach. DecToBin ist schon etwas schwieriger, aber wenn man sich da mal ein paar minuten gedanken macht, kann man auch darauf kommen. abgesehen davon denk ich mal, dass im internet dutzende umrechnungs-algorithmen zu finden sind.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

ich habe noch das hier bei wiki gefunden:

http://de.wikipedia.org/wiki/Horner_Schema#Umwandlung_zwischen_verschiedenen_Zahlensystemen

jetzt wollte ich daraus nur eine methode zur umrechnung erstellen.
meine einzige bisher ist diese:

public static long addiere(long zahl1, long zahl2, int basis){
return zahl1 + zahl2 + basis;

könnte ich nicht in dieser auch gleich die umrechnung reinbringen?
so das ich nur noch eine methode habe oder ist es übersichtlicher zwei methoden zu erstellen?

und dieses horner schema bei wiki, ist das auch das was du schon gepostet hast onlinestate?

Edit: Hier noch was von wiki:

http://de.wikipedia.org/wiki/Dualsystem#vom_Dualsystem_ins_Dezimalsystem

Aber ich weiß einfach nicht wie ich diese Umformung bei meinem return Befehl miteinbringe :|
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Weiß jetzt nicht so wirklich wo dein Problem liegt. Die Basis kannste ja einfach einbringen, wenn du jedes mal die 2 durch die Variable des Basis ersetzt.
Und meine Idee war ja jetzt, dass du die binären Zahlen umwandelst, die dezimalen addierst und das Ergebnis wieder in eine binäre umwandelst. Da brauchste ja jetzt nichts mehr für.
Du könntest natürlich auch nen binären Addierer machen, aber das ist dann doch ne Stufe komplizierter.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Onlinestate am 11.11.2008 12:27 schrieb:
Weiß jetzt nicht so wirklich wo dein Problem liegt. Die Basis kannste ja einfach einbringen, wenn du jedes mal die 2 durch die Variable des Basis ersetzt.
Und meine Idee war ja jetzt, dass du die binären Zahlen umwandelst, die dezimalen addierst und das Ergebnis wieder in eine binäre umwandelst.
Das hatte ich ihm eigentlich auch schon im ersten Antwort-Post vorgeschlagen.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

ok, dann versuchs ichs mal mit eurem vorschlag:

int BinToDec(int n) {
String number = new String().valueOf(n);
int dec = 0;
for (int i = 0; i <= number.length() - 1; i++) {
dec += (number.charAt(i) - '0') * Math.pow(2, number.length() - 1 - i);
}
return dec;
}

int DecToBin(int n) {
int bin = 0;
while (n > 0) {
bin = bin * 10 + n % 2;
n /= 2;
}
return bin;
}

wenn ich jetzt die zahl1 = 1001 ( 9 ) , zahl2 = 11 ( 3 ) und die basis 2 habe und die ausgabe 1100 sein soll...
... wo setze ich diese ganzen werte dann ein, das war mir nur noch unklar.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

frogi am 11.11.2008 16:25 schrieb:
wenn ich jetzt die zahl1 = 1001 ( 9 ) , zahl2 = 11 ( 3 ) und die basis 2 habe und die ausgabe 1100 sein soll...
... wo setze ich diese ganzen werte dann ein, das war mir nur noch unklar.
:rolleyes: .... Dir sollte ja langsam wohl klar sein, wie man Funktionen benutzt.
int zahl1, zahl2, erg;
zahl1 = BinToDec(1001);
zahl2 = BinToDec(11);
erg = DecToBin(zahl1 + zahl2);
sysout(erg); // gibt 1100 aus

Wenn du andere Basen haben willst, musst einfach in den zwei Funktionen alle Stelle wo die 2 auftaucht durch deinen zusätzlichen Paramter für die Basis ersetzt werden.
Falls du dich wirklich mit Programmieren beschäftigen willst, empfehle ich dir dringends dich eindringlich mit dem Thema zu befassen, weil mit Vorlagen aus dem Netz zusammenschustern kommt man nicht weit. Außerdem scheinen dir die elementarsten Konzepte noch gar nicht richtig klar zu sein.
Als Beispiel wäre da zB dieses Buch anzuführen.
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Onlinestate am 11.11.2008 16:53 schrieb:
Falls du dich wirklich mit Programmieren beschäftigen willst, empfehle ich dir dringends dich eindringlich mit dem Thema zu befassen, weil mit Vorlagen aus dem Netz zusammenschustern kommt man nicht weit. Außerdem scheinen dir die elementarsten Konzepte noch gar nicht richtig klar zu sein.

Ja natürlich kapiert er seine Schule-/Uniaufgaben nicht, weil er einfach so lange blöde Fragen stellt bis ihm jemand endlich die Antwort geliefert hat (und das vorher auch schonmal ..)! Und das soll jetzt nicht gegen dich gehen Onlinestate (deine Hilfsbereitschaft in allen Ehren), aber lasst ihn doch seine Aufgabe selber lösen. Und wenn er Null Plan von der ganzen Materie hat, dann soll er sich halt einlesen/einarbeiten (noch dazu ist es bei solch einfachen Aufgaben von der Schwierigkeit ja kein Problem).

Gruß
Wk
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Ja natürlich kapiert er seine Schule-/Uniaufgaben nicht, weil er einfach so lange blöde Fragen stellt bis ihm jemand endlich die Antwort geliefert hat (und das vorher auch schonmal ..)!

Es gibt keine blöden Fragen, nur blöde Antworten, deine ist ein Klasse Beispiel dazu. Danke :top:
Außerdem scheinst Du den Sinn eines Forums nicht ganz zu verstehen.Ich zitiere mal aus Wikipedia, um dir das verständlich zu machen.

"...ist ein virtueller Platz zum Austausch und Archivierung von Gedanken, Meinungen und Erfahrungen."

Zum Austausch von Gedanken und Erfahrungen..hm..das überrascht dich oder?
Ich bin komplett neu in der Materie ohne jegliche Vorkenntnisse und fühle mich gerade, als ob ich Ingenieursstudium begonnen habe und am 2 Tag schon eine Brücke bauen soll.
Da darf man sich ja wohl noch in einem Forum, Begriffserläuterung siehe oben, an erfahrene Leute wenden die mit solchen Dingen schonmal gearbeitet haben oder?

Und wenn er Null Plan von der ganzen Materie hat, dann soll er sich halt einlesen/einarbeiten (noch dazu ist es bei solch einfachen Aufgaben von der Schwierigkeit ja kein Problem).

Natürlich lese/arbeite ich mich ein, nur das ganz ich 24 Std. am Tag machen...trotzdem habe ich danach noch Fragen.
Und die Stelle ich in freundlichem Ton hier und hoffe auf eine ebenso freundliche Antwort.

Dir ist schon klar, dass nicht jeder diese Aufgabe als einfach betrachtet oder?
Das geht auf Erfahrungen usw. zurück aber das würde für dich zu weit führen.
Deshalb nehmen wir ein Spiel als Beispiel: "Die Onlineerfahrung kann während des Spiels varieren".

Klar soweit?
 
AW: Binäre und natürliche Zahlen "vermischen" ?

frogi am 14.11.2008 11:09 schrieb:
Zum Austausch von Gedanken und Erfahrungen..hm..das überrascht dich oder?
Und welche Gedanken und Erfahrungen hast du zu diesem Austausch schon beigesteuert? Ich sehe (hier im Entwicklungs-Forum) nur Links auf Seiten wo sich hilfsbereite User das Wissen anlesen können um deine Aufgaben zu lösen?!

frogi am 14.11.2008 11:09 schrieb:
Dir ist schon klar, dass nicht jeder diese Aufgabe als einfach betrachtet oder?
Hmm doch?! Man kann das - wie bei den meisten Problem - ganz objektiv betrachten .. so wirst du mir z.B. zustimmen, dass die Rechenaufgabe 2+1 sehr leicht zu lösen ist, während Gleichungen höheren Grades meist sehr schwer sind. Und natürlich ist mir bewusst, dass kleine Kinder noch nicht rechnen können, aber du bist offensichtlich in der Lage eine Java Entwicklungsumgebung zu bedienen sowie eine Suchmaschine zu benutzen und das qualifiziert dich quasi für die erste Klasse.

frogi am 14.11.2008 11:09 schrieb:
Nein noch nicht ganz: Ich geb dir völlig recht darin, dass ein Forum dazu da ist sich gegenseitig zu helfen. Sag uns doch einfach nach welcher Vorlage du dir das Programmieren beibringst oder für welches Projekt du diese Probleme lösen willst! Also z. B. aus welchem Buch oder welchem Tutorial die Aufgabe mit den Flächen und die mit den binären Zahlen sind .. dann fällt es uns gleich viel leichter den größeren Zusammenhang zu erkennen und andere außer dir können auch von diesem Post hier profitieren! Und was mich gerade etwas wundert: Gibt es zu den Aufgaben keine Lösungen?


Grüße
Wk
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Hey frogi!

probiers mal hiermit:

public static String Rechner(int a, int b, int base)
{
int c;
c = a+ b;
return Integer.toString(c, base);
}


Die Methode berechnet zuerst die Summe der übergebenden Zahlen und gibt sie dann aus mit der gewählten basis. Beispiel:

System.out.print(Rechner(9, 9, 2));

ergibt : 10010
 
AW: Binäre und natürliche Zahlen "vermischen" ?

Das ist klasse, nur das funktioniert nicht wenn man binär rechnet oder?

Also z.B. System.out.println(Rechner(1001, 11, 2))

Und das soll dann 1100 ergeben ?
 
Zurück