AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bit?
Thema durchsuchen
Ansicht
Themen-Optionen

Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bit?

Ein Thema von Assarbad · begonnen am 20. Nov 2010 · letzter Beitrag vom 20. Nov 2010
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 18:57
Achso
Aber dann komme ich nicht umhin weiter 64bit-Ganzzahlen (und größer) einzusetzen. Denn auch bei UTF-8 werden ja die Bits nicht wirklich eingespart.
Naja, aber du meintest ja eingangs, dass die meisten Dateien <4GB sind. Wenn ich mir meine Festplatte so anschaue, sind die meisten Dateien wohl auch <2GB. Insofern spart das schon Platz, weil eben nur noch für einen Teil der doppelte Speicherplatz benötigt wird.

Außerdem werden auch bei Gleitkommazahlen keine Bits "eingespart". Man erkauft sich die geringere Größe eben durch geringere Genauigkeit. Du kannst mit einer Gleitkommazahl nicht mehr Stellen speichern als mit einer Festkommazahl, nur größere Wertebereiche abdecken. In einer 32Bit-Gleitkommazahl kannst du also niemals alle Werte speichern, die in einen 64-Bit-Integer-Wert passen. Genauergesagt sogar weniger als in einem 32-Bit-Integer, da für den Exponenten ja auch noch mal Platz draufgeht. Da wäre es noch eine "genauere" Lösung einen 32-Bit-Integer zu nehmen und den Inhalt beim Anzeigen mit dem Faktor 2 zu multiplizieren. Würde nur bei kleineren Dateien stärker auffallen - dafür wären die Ungenauigkeiten bei großen Dateien mit Gleitkommazahlen noch höher.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 19:05
Naja, aber du meintest ja eingangs, dass die meisten Dateien <4GB sind. Wenn ich mir meine Festplatte so anschaue, sind die meisten Dateien wohl auch <2GB. Insofern spart das schon Platz, weil eben nur noch für einen Teil der doppelte Speicherplatz benötigt wird.
Jupp, habe auch gerade gedacht, vielleicht sogar was abgestuftes wie du ja mit deinem UTF-8 so schön gemeint hattest. Also auch wenn ich als kleinsten Wert 32bit reservieren würde, könnte man vielleicht dennoch oberhalb dieses Bereichs abstufen. Meines Wissens nach gibt es bisher noch immer keinen Festspeicher der auch nur annähernd an das heranreicht was man mit 64bit adressieren kann.

Selbst bei CPUs schummeln die Hersteller ja

Also danke erstmal für deinen Kommentar. Ich warte mal ob vielleicht noch jemand eine kreative Idee hat. Und das mit dem "mehr Speichern" ist so eine Sache. Wenn du "Programming Pearls" von Jon Bentley gelesen hast, weißt du was ich meine. Ansonsten kann ich nur empfehlen daß du dir dieses Buch auf dem Wunschzettel für Geburtstag oder Weihnachten vormerkst.

Außerdem werden auch bei Gleitkommazahlen keine Bits "eingespart". Man erkauft sich die geringere Größe eben durch geringere Genauigkeit. Du kannst mit einer Gleitkommazahl nicht mehr Stellen speichern als mit einer Festkommazahl, nur größere Wertebereiche abdecken. In einer 32Bit-Gleitkommazahl kannst du also niemals alle Werte speichern, die in einen 64-Bit-Integer-Wert passen. Genauergesagt sogar weniger als in einem 32-Bit-Integer, da für den Exponenten ja auch noch mal Platz draufgeht. Da wäre es noch eine "genauere" Lösung einen 32-Bit-Integer zu nehmen und den Inhalt beim Anzeigen mit dem Faktor 2 zu multiplizieren. Würde nur bei kleineren Dateien stärker auffallen - dafür wären die Ungenauigkeiten bei großen Dateien mit Gleitkommazahlen noch höher.
Gut, eine definitive Aussage war es auch die ich wollte. Alternativen gibt es im Zweifelsfall immer. Ich wollte nur nicht einer falschen Fährte folgen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 19:09
Angenommen 99% der Dateien liegen unter 2 GiB (also 31 Bit), könnte man Bit 32 (signed) als Indikator für erweiterte Daten zur Dateigröße verwenden (ein angehängter 64 Bit Wert). Bei 1% dann 96 Bit, beim Rest 32 Bit gespart

€: Sehe gerade, Dein eigener Vorschlag 3)... der wird wohl am sinnvollsten sein.

Geändert von Satty67 (20. Nov 2010 um 19:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 19:34
Angenommen 99% der Dateien liegen unter 2 GiB (also 31 Bit), könnte man Bit 32 (signed) als Indikator für erweiterte Daten zur Dateigröße verwenden (ein angehängter 64 Bit Wert). Bei 1% dann 96 Bit, beim Rest 32 Bit gespart
Eine exakte Wissenschaft ist das ohnehin nicht, aber wie kommst du auf die 96bit?

Es gäbe ja sogar noch eine Variation von Nummer 3 die ohne extra Bit auskommt. Ich könnte eine abstrakte Basisklasse deklarieren und dann in der Implementation entweder eine 32bit oder 64bit Ganzzahl verwenden. Da ja alle Funktionen auf den Accessor zugreifen würden, könnte das funktionieren. Muß ich mir aber noch angucken, nicht daß mir dann die Vererbung extra Kosten draufschlägt
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 19:40
aber wie kommst du auf die 96bit?
Bin von einer einfachen Lösung ausgegangen, bei der nur ein 64 Bit Wert angehängt wird und die 31Bit im kleinen Integer brach liegen.

€: Schlechter Satzbau in Post #7, denke Du hast es als 96 Bit gespart gelesen, so hatte ich das nicht gemeint.

Geändert von Satty67 (20. Nov 2010 um 19:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 19:50
Bin von einer einfachen Lösung ausgegangen, bei der nur ein 64 Bit Wert angehängt wird und die 31Bit im kleinen Integer brach liegen.
Plus sizeof(Pointer), oder?

Aber ihr beide habt mich auf eine andere Idee gebracht. Sozusagen ganz im Sinne von Jon Bentley's "Programming Pearls". Also schonmal danke. Mal sehen wieviel Einsparung ich hinbekomme
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Nochmal Gleitkommazahlen, 32bit Float geeignet für Ganzzahlendarstellung bis 64bi

  Alt 20. Nov 2010, 20:02
Hi,

um auch mal bei WinDirStat zu helfen (tolles Programm btw) meine Meinung: Es sollten die 32 bit Gleitkommawerte reichen. Nicht immer muss man die sauberste Lösung wählen. Und da der Wert eh nur als 777,7 MB angezeigt wird (völlig ausreichend, wozu sollte ich die Größe bis auf das letzte Byte wissen wollen?) reichen die 7 Ziffern Genauigkeit hin. Falls das für die internen Berechnung und die Grafik ebenfalls reicht, gibt es keinen Grund da noch mehr Komplexität reinzustecken
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz