Entwickler-Ecke
Algorithmen, Optimierung und Assembler - 4 bytes in eines
retnyg - Mi 09.02.05 15:37
Titel: 4 bytes in eines
Das Alphabet umfasst 26 Zeichen, 29 wenn man öüä mitnimmt.
das ganze mal 2 (man braucht Gross/Kleinbuchstaben), wären 58.
so nun noch .,;:!? hinzu und wir haben 64 zeichen. damit sollte man jeden deutschen text darstellen können (aufs scharf-s verzichte ich aus platzgründen.
sooooo.... 64 * 4 = 256, also kann man rein theoretisch 4 "Deutsch-Bytes" in ein Byte packen.
angenommen unser text ist 'blub'
b wäre dann 2
l 12
u 21
unser DB (deutschbyte) wäre also 2,12,21,2
das db wäre so aufgegliedert:
000..063 : DB1
064..127 : DB2
128..191 : DB3
192..255 : DB4
so, wenn man jetzt aber ein byte in 4 teile aufsplittet hat man noch 2 bit pro teil.
mit 2 bit kann man aber nur 4 verschiedene zustände anzeigen.
man könnte jetzt also die werte des deutschbytes zusammenzählen, summe wäre beim beispiel 37.
:arrow: blöderweise weiss ich jetzt aber nicht mehr, welches DB wie lange ist.
gibts es eine mathematische möglichkeit, das umzusetzen, so dass man die einzelnen 4 werte aus dem byte extrahieren kann ?
AXMD - Mi 09.02.05 15:40
Achtung! 64 Zeichenmöglichkeiten = 6 Bit. 8 machen ein Byte aus. Nix also mit 6*4 = 8 ;)
AXMD
I.MacLeod - Mi 09.02.05 15:43
Du schmeißt hier alles durcheinander. Ein Byte hat 8 bit (Zahlenbereich 0..255). Der Zahlenbereich 0..63 lässt sich durch 6 bit darstellen, du könntest also 4 Zeichen in 3 Bytes unterbringen.
Zitat: |
gibts es eine mathematische möglichkeit, das umzusetzen, so dass man die einzelnen 4 werte aus dem byte extrahieren kann ? |
Ja, aber nur wenn du dich auf 4 Zeichen beschränkst :-P
Ansonsten kannst du dir mal shl/shr und or/+ angucken.
uall@ogc - Mi 09.02.05 15:44
hättest dann ja ne tolle komprimierung gefudnen (aber ich behaupte aml es geht nicht) sonst könntest auch bei 1 byte immer alles zusammen rechnen
z.b. haste #23#12#120#2#3#2#1#1#3 -> 167
das könnte man als 1 byte abspeichern aber draaus kommste nie mehr zum anfang, selbst wenn wüßtest das du 9 bytes hast
in deinem fall kann ja auch 2,12,21,2 -> 1,12,21,3 sein etc.
wenn das gehen würde könntest also immer weiter komprimieren
AXMD - Mi 09.02.05 15:47
Falls du so eine Methode implementierst rat ich dir, sie zum Patent anzumelden :twisted:
AXMD
MitschL - Mi 09.02.05 17:18
Hm,
ich würde : oder ; weglassen und ein Leerzeichen erlauben. :)
Aber das nur mal so am Rande...
gegrüßt!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!