größe zahlen < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | hi leute ich hab ein problem mit java.
ich bin eigentlich ein c# programmieren undjetzt bin ich leider darauf angewiesen mit java was zu machen und ich kenn die sprache zwar aber ich bleib alle 2 min an einem neuen problem hängen.
Weil ich nicht fit bin in Java |
Ich versuche ein Programm zu schreiben was mir binär zahlen addieren kann und zwar beliebig grosse.
also theoretisch 65bit und grösser.
Was ich bis jetzt hab ist noch nicht viel bis auf das ich weiss wie das aussehen sollte.
Implementierung JAVA Datentyp für beliebig große natürliche Zahlen.
Konstruktor sollten zumindest die Umwandlung aus einer vorzeichenlosen 32-Bit-Zahl können, oder ähnlich zum testen ob es geht.
Operationen auf die Zahlen(binär):
• Addition x + y
• Subtraktion x − y (mit Wert 0 bei x < y)
• Test auf x ≤ y
ich will kein biginteger oder ähniches ich will quasie einen eigenen datenyp Implementiernen!
kann mir da einer sagen wie ich bei so was ang
fange oder wie ich das in java implementieren würde?
Gruß neo-killer
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:09 So 18.04.2010 | Autor: | felixf |
Hallo!
> hi leute ich hab ein problem mit java.
> ich bin eigentlich ein c# programmieren
Willst du damit sagen, dass du ein C#-Programmierer bist?
> undjetzt bin ich
> leider darauf angewiesen mit java was zu machen und ich
> kenn die sprache zwar aber ich bleib alle 2 min an einem
> neuen problem hängen.
> Weil ich nicht fit bin in Java
> Ich versuche ein Programm zu schreiben was mir binär
> zahlen addieren kann und zwar beliebig grosse.
> also theoretisch 65bit und grösser.
>
> Was ich bis jetzt hab ist noch nicht viel bis auf das ich
> weiss wie das aussehen sollte.
>
> Implementierung JAVA Datentyp für beliebig große
> natürliche Zahlen.
Verwende BigInteger. Etwas neu zu implementieren macht nur Sinn, wenn es wirlich besser wird.
Oder hat das ganze einen voellig anderen Hintergrund (was ich eher vermute)?
> Konstruktor sollten zumindest die Umwandlung aus einer
> vorzeichenlosen 32-Bit-Zahl können, oder ähnlich zum
> testen ob es geht.
>
> Operationen auf die Zahlen(binär):
> • Addition x + y
> • Subtraktion x − y (mit Wert 0 bei x < y)
> • Test auf x ≤ y
>
> ich will kein biginteger oder ähniches ich will quasie
> einen eigenen datenyp Implementiernen!
>
> kann mir da einer sagen wie ich bei so was ang
> fange oder wie ich das in java implementieren würde?
Erstmal ueberlegst du dir, wie du die Zahlen darstellen willst. Eine Moeglichkeit ist, eine Zahl als Array von unsigned ints darzustellen, also wie hier mit $r = [mm] 2^{32}$. [/mm] (Du kannst natuerlich auch $r = [mm] 2^{31}$ [/mm] oder $3 = [mm] 2^{16}$ [/mm] oder irgendwas anderes nehmen.)
Zahlen addieren tust du dabei wie schriftlich im Zehnersystem (da waere $r = 10$), sprich du guckst ob es einen Uebertrag gibt. Falls es bei der Summe der hoechsten "Ziffern" (das sind ja unsigned ints) einen Uebertrag gibt, musst du die Darstellung vergroessern um eine weitere Ziffer vorne.
Die Subtraktion kannst du auch wie bei der schriftlichen Subtraktion machen, nur dass die Ziffern jetzt nicht zwischen 0 und 9 sind, sondern zwischen 0 und [mm] $2^{32} [/mm] - 1$ (oder was auch immer).
So ein Vergleich ist auch sehr einfach zu machen. Vergleiche erstmal die Laenge der Zahlen (also guck welches die hoechste Stelle mit einer Ziffer [mm] $\neq [/mm] 0$ ist); wenn die Laengen verschieden sind, bist du sofort fertig. Andernfalls musst du die Ziffern lexikographisch vergleichen. Halt genauso wie du etwa $1231438$ mit $1294823$ vergleichst: sie sind gleichlang, also faengst du vorne an; 1 ist gleich, 2 ist gleich, dann hast du $3 < 9$, also ist die erste Zahl kleiner.
Und wenn du immer noch nicht weisst, wie du das in Java machen sollst, programmier es doch erstmal in C# (das solltest du ja koennen) und schaue dort, ob es funktioniert -- und dann ueberleg dir, wie du das Programm in Java uebersetzt. So schwer ist das wirklich nicht, das schwierigste ist die Wahl der Datenstruktur.
LG Felix
PS: Es waere wirklich hilfreich, wenn du dir beim Schreiben deiner Beitraege mehr Muehe geben wuerdest. Man muss ja nicht immer perfekte Rechtschreibung verwenden -- wer tut das schon --, aber so wie du das schreibst wirkt es wie nebenbei hingeschmiert. Und das animiert nicht gerade, darauf zu antworten.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:00 Mo 19.04.2010 | Autor: | neo-killer |
Ich werde versuchen meine nächsten Posts ein wenig schöner zu gestallten!
Gruß und Danke
Neo
|
|
|
|