Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Platz sparen durch Darstellung der Zahlen zur Basis 64(z.b.) (https://www.delphipraxis.net/6449-platz-sparen-durch-darstellung-der-zahlen-zur-basis-64-z-b.html)

Tiefflieger 10. Jul 2003 23:59


Platz sparen durch Darstellung der Zahlen zur Basis 64(z.b.)
 
mir ist gerade ein gedanke eingefallen:

bei programmen wird ja gern die darstellung der zahlen zur basis 16 (hexadezimal) genommen, ich nehme mal an, um platz zu sparen?

warum treibt man das spiel nicht weiter, und nimmt höhere 2er potenzen (die wohl offensichtlich für computer am einfachsten zu verstehen sind) - warum nimmt man nicht zahlen zur basis 64? die platzersparniss ist doch enorm:

36864 (= 9*64² und 5 Ziffern, die gespeichert werden müssen) zur basis 10 würde z.b.
009 (3 Ziffern, die gespeichert werden müssen) zur basis 64 entsprechen

bei größeren zahlen wird die anzahl der ziffern, die man bei 64-ären zahlen im gegensatz zu den 10-ären zahlen speichern muß, noch kleiner, der einzig begrenzende Faktor ist erstmal die ascii-tabelle, man muß ja irgendwie 64 verschiedene ziffern darstellen können.

ist der rechenaufwand zu groß oder habe ich irgendeinen denkfehler gemacht oder warum wird diese Technik nicht verwendet?

Gast 11. Jul 2003 00:21

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Die Darstellung hexadezimal hat eine andere Bewandnis!

Denk mal nach. 8bit = 1 Byte! Kleinste zusammenhängende Einheit in einem PC. 8bit = 2 Nibble (1 Nibble = 4bit)

Ein Hexadezimal-Digit stellt exakt ein Nibble dar. Zwei Nibble = 1 Byte = 2 Digits = 1 Byte ...

Das erleichtert Rechnen/Umrechnen und die Ansicht von Adressen etc - will heissen ... es geht nicht (allein) um Platzersparnis.

Und jetzt denk' nochmal nach, ob du diese Vorteile auch bei Basis 64 haben würdest ... ich denke nicht ... außerdem kann sich ja keiner 64 ausgedachte Zeichen merken ... macht alles nur komplizierter. Oder hab ich nen Rechenfehler? 26 Buchstaben + 10 Ziffern = 36 Zeichen ... wo ist der Rest?

Christian Seehase 11. Jul 2003 00:30

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Moin Tiefflieger,

Zitat:

Zitat von Tiefflieger
bei programmen wird ja gern die darstellung der zahlen zur basis 16 (hexadezimal) genommen, ich nehme mal an, um platz zu sparen?

Ausserdem:
Wo ist da eine Platzersparnis, ausser ich will die Zahl als String speichern? ;-)

JoelH 11. Jul 2003 06:02

hmm,
 
ausser bin speichern haste keine Platzersparnis, denn die CPU muss sich eh alles nach Binär konvertieren und durch deine Idee wird eigentlich alles einfach lansamer !

Tiefflieger 11. Jul 2003 16:21

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Zitat:

Zitat von Assarbad
Die Darstellung hexadezimal hat eine andere Bewandnis!

Denk mal nach. 8bit = 1 Byte! Kleinste zusammenhängende Einheit in einem PC. 8bit = 2 Nibble (1 Nibble = 4bit)

Ein Hexadezimal-Digit stellt exakt ein Nibble dar. Zwei Nibble = 1 Byte = 2 Digits = 1 Byte ...

Das erleichtert Rechnen/Umrechnen und die Ansicht von Adressen etc - will heissen ... es geht nicht (allein) um Platzersparnis.

[...]außerdem kann sich ja keiner 64 ausgedachte Zeichen merken, oder hab ich nen Rechenfehler? 26 Buchstaben + 10 Ziffern = 36 Zeichen ... wo ist der Rest?

naja, man könnte zwischen klein-und groß buchstaben unterscheiden, dann gibts da ja noch die Ä etc...
und warum nimmt man dann nicht z.b. Zahlen zur basis 128, sprich ein digit wäre genau ein byte? was wäre im vergleich zu den hex-zahlen nachteilhaft?

Gast 11. Jul 2003 16:58

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Nope ... 128 sind aber leider noch nicht ein Byte :) ... da fehlt noch ein Bit. Es muessten 256 sein. Und den EASCII-Zeichensatz auswendig lernen nur um dein Zahlensystem zu beherrschen ... na ich weiss ja nicht.
Geschweige denn Umrechnen und Rechnen damit *brr*

So gesehen existiert ja 256bit schon ... indem du einfach alle 256 Zeichen des EASCII Zeichensatzes darstellst.

Tiefflieger 11. Jul 2003 17:20

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
whoops, hab mich wohl verrechnet :-)

ich versteh ja, dass im endeffekt eh alles binär gespeichert werden muß, aber wozu sind dann überhaupt hex-zahlen gut? einfach nur um sachen besser anzeigen zu können?

Gast 11. Jul 2003 17:28

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Besser anzeigen, rechnen und umrechnen. Siehe meine erste Antwort :)

d3g 11. Jul 2003 17:59

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Ein großer Nachteil wäre auch, dass du dir eine solche Zahl nicht merken kannst. Im IPv4-Standard hat man auch eine alternative Darstellung der IP-Adressen gewählt (nämlich die vier Bytes getrennt zu schreiben) anstatt (was platzsparender gewesen wäre) die IP-Adresse hexadezimal zu notieren, weil sich das leichter merken lässt. Bei IPv6 ist die Adresse mit 16 Byte aber so lang geworden, dass man dann doch hexadezimal notiert. Wenn du jetzt aber nur an 10 und nicht an 16 Ziffern gewohnt bist, wirst du Probleme haben, dir eine solche Adresse zu merken. Jetzt stell dir das mal mit 256 Ziffern vor. Nähme man den ASCII-Standard für die Ziffern (was sich ja durchaus anbieten würde), müsste man die Nummer jedes ASCII-Zeichens kennen, um sich den Wert der Zahl im Dezimalsystem vorstellen zu können. Da die Ziffern des Dezimalsystems im ASCII-Standard nicht ihren Wert sondern einen zwischen 48 und 57 ist die Verwirrung beim Auftreten solcher Ziffern dann komplett...

tommie-lie 11. Jul 2003 18:59

Re: Platz sparen durch Darstellung der Zahlen zur Basis 64(z
 
Um mal Tieffliegers Frage zu beantworten, warum man im Quellcode Hexadezimalzahlen benutzt: Es ist manchmal logischer.
Wenn du ein DWORD haben willst, bei dem alle Bits gesetzt sind, wäre das dezimal 4294967295. Hexadezimal aber FFFFFFFF.
Jetzt sag' mir, wo man eher auf den ersten Blick erkennt, daß es 32 Einsen sind... ;-)
Mit Platzersparnis im Code hat und hatte es nichts zu tun, denn der Compiler wandelt es so oder so in Hexadezimalzahlen um, auch bei konstanten oder ähnlichen Dingen geschieht dies. Im Binärcode des Kompilates kommt keine dezimale Zahl vor. Das geschieht auch mit oktalen oder binären Zahlen, bei den Compilern die diese Interpretieren (hier kann delphi aber nur hexadezimale und dezimale Zahlen).


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz