www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - Doppeltgenaue Integerzahlen
Doppeltgenaue Integerzahlen < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Doppeltgenaue Integerzahlen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:49 Mi 07.02.2007
Autor: skalar

Aufgabe
Addition, Subtraktion, Multiplikation von "doppeltgenauen Integerzahlen"

Bereich: +- 10^18 - 1  
KEIN 64bit-ganz zahlen typ... maximal 32bit

hallo allerseits,
da mir beim letzten mal schon so super geholfen wurde, dacht ich mir veruch ichs diesmal nochmal :)

diesmal geht es um informatik. vorher sei gesagt, das ich wirklich die Ambition habe die Hausarbeit selber zu programmieren und keinerlei Lösungen haben möchte sondern nur bissel Hilfe und Denkanstöße :)

da ich schon früher als C64-besitzer programmiert habe (natürlich nur basic...für assembler hats net gereicht;) ) finde ich meine aufgabe garnet schwer..  eeeiiigentlich

die Aufgabenstellung wie oben.

nunja... eigentlich nur ein Taschenrechner

doch was genau habe ich unter "doppeltgenauen Integerzahlen" zu verstehen?

und.. wie soll ich den wertebereich abdecken ohne einen 64bit-typ zu verwenden? ein 32bit-typ geht doch nur bis [mm] 10^9 [/mm]

so...das wärs für erste...

achja..dazu sei gesagt... ich muss erst am 15.3 abgeben ;)

mfg



        
Bezug
Doppeltgenaue Integerzahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 16:23 Mi 07.02.2007
Autor: Martin243

Hallo,

in welcher Programmiersprache sollst du das bewerkstelligen?


> doch was genau habe ich unter "doppeltgenauen Integerzahlen" zu verstehen?

Hmm, das ist keine offizielle Bezeichnung. Aber die Antwort gibst du ja selbst mit dem darzustellenden Bereich, oder? Ansonsten solltest du vielleicht nochmal nachfragen, was der Aufgabensteller damit meint.


> und.. wie soll ich den wertebereich abdecken ohne einen 64bit-typ zu verwenden?

Das geht nicht, es sei denn, du machst Abstriche bei der Genauigkeit. Jeder Taschenrechner zeigt immer nur eine fest Anzahl von Stellen an und rechnet intern auch nur mit einer bestimmten Genauigkeit.
Daher wäre es möglich, ganze Zahlen analog zu floats darzustellen mit Vorzeichen, Exponent (ohne Bias, weil wir nur ganze Zahlen darstellen wollen) und Basiszahl, wobei man z.B. folgendes Format wählen könnte:
Vorzeichen s: 1 bit
Exponent e: 5 bit
Basiszahl b: 26 Bit
Die darzustellende Zahl wäre dann (anders als bei floats!) $x = [mm] (-1)^s [/mm] * [mm] 2^e [/mm] * b$

Das ist nur als Anregung gedacht, falls ich die Aufgabe richtig verstanden habe.


Gruß
Martin

Bezug
                
Bezug
Doppeltgenaue Integerzahlen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:23 Mi 07.02.2007
Autor: skalar

hallo,
oh..vergessen.... soll in C++ gecodet werden

ich werde dem Prof einfach mal ne mail schreiben.. meld mich dann mit seiner antwort

da ich erst im ersten semester bin weiß ich leider auch net wie er sich das da vorstellt... ein ungenauer taschenrechner (sei es auch nur in fernen dezimalbereich) is doch irgendwie auch net das wahre ;)

danke
mfg


Bezug
        
Bezug
Doppeltgenaue Integerzahlen: Antwort
Status: (Antwort) fertig Status 
Datum: 08:31 Do 08.02.2007
Autor: Frank05


> Addition, Subtraktion, Multiplikation von "doppeltgenauen
> Integerzahlen"
>  
> Bereich: +- 10^18 - 1  
> KEIN 64bit-ganz zahlen typ... maximal 32bit

> diesmal geht es um informatik. vorher sei gesagt, das ich
> wirklich die Ambition habe die Hausarbeit selber zu
> programmieren und keinerlei Lösungen haben möchte sondern
> nur bissel Hilfe und Denkanstöße :)

> und.. wie soll ich den wertebereich abdecken ohne einen
> 64bit-typ zu verwenden? ein 32bit-typ geht doch nur bis
> [mm]10^9[/mm]


Hast du dir schonmal überlegt wie man früher mit 16bit Integern diese tollen großen Zahlen dargestellt hat, die heute ganz lässig in einem 32bit Integer Platz finden? Oder was ist mit noch viel größeren Zahlen, wie etwa Primzahlen in versch. Verschlüsselungsverfahren?

Offensichtlich sind 32bit zu wenig für eine solche Zahl. Wenn du nun also einen Datentyp hättest der 64bit lange Zahlen speichert wäre das Problem gelöst. Warum also nicht einfach einen solchen Datentyp selber schreiben? Um die 64bit zu bekommen kannst du einfach zwei 32bit Integer nehmen und sie als einen 64bit Integer auffassen, d.h. der zweite Integer speichert Werte die um Faktor 2^32 größer sind.

Auf diese Weise lassen sich beliebig große Zahlen darstellen (natürlich begrenzt durch die Speicherkapazität), aber für diese Art von Datentyp musst du dann leider selbst die nötigen Eingabe/Ausgaberoutinen schreiben, da eine normale Ausgabe von zwei 32bit Integern hier nicht wirklich hilfreich ist.

PS: Es gibt übrigens auch einige Bibliotheken für C++, die derartige erweiterte Datentypen zur Verfügung stellen. Schlagwort zum Suchen: BigInt(eger)

PPS: Das ist natürlich nur eine Möglichkeit, aber die Grundidee bleibt immer die Gleiche: Verwende vorhandene Datentypen um daraus einen neuen größeren Datentyp zusammenzusetzen.

Bezug
                
Bezug
Doppeltgenaue Integerzahlen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:44 Do 08.02.2007
Autor: Martin243

Hallo,

das ist natürlich eine Möglichkeit, aber ich dachte, man soll sich wirklich auf einen int pro darzustellende Zahl beschränken. Falls nicht, stehen einem natürlich alle Türen offen...


Gruß
Martin

Bezug
                        
Bezug
Doppeltgenaue Integerzahlen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:10 Fr 09.03.2007
Autor: skalar

hier die antwort vom prof:

----------------
Ganz einfach: wenn Sie ein System haben, das als einen zusätzlichen Typ eine
64-Bit-Ganzzahl zur
Verfügung hat (solche Systeme gibt es!), wäre die Aufgabe viel zu einfach.
Nein, Sie sollen den Bereich bis 10^18 imitieren,
beispielsweise, dass Sie eine 64-Bit-Darstellung auf zwei (natürlich nicht:
EINE)
32-Bit-Darstellungen herunterbrechen, dann arbeiten Sie in der
Binärdarstellung
- oder dass Sie in einen Speicherplatz den Bereich bis
[mm] 10^9 [/mm] (unterste 9 Dezimalziffern) und in den anderen die oberen Dezimalziffer
abspeichern (dann arbeiten
Sie von der Hochsprache her in der Dezimaldarstellung). Im letztern Fall
wäre die Zahl dann wertmäßig
darzustellen - NICHT in C++ so zu berechnen, da Bereichsüberschreitung:
Zahl1 + [mm] Zahl2*10^9, [/mm]
---------------

bissel spät .. ich weiß... aber hatte bis gestern noch einen klausurblock zu beweltigen .)

mfg

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]