Ich habe mich voller Nostalgie mal wieder an meinen CFX9850GC gesetzt und ein paar Sachen probiert. Ich poste einfach mal meine Ideen, vielleicht hat ja jemand Lust mitzudiskutieren...
Will man die Zeichen in Listen speichern, fällt der Trick mit dem Imaginärteil weg. Somit stehen einem 15 Ziffern zur Verfügung.
Dort paßt 2^49 (562.949.953.421.312) mit 15 Stellen gerade so rein. Man hätte entsprechend 49 Bit zur Verfügung. Nutzt man noch den Exponenten und die Vorzeichen als Statusbits, so läßt sich noch etwas mehr herauskitzeln, darauf will ich aber im Moment nicht eingehen.
Es gibt 26 Buchstaben, deshalb müssen wir mit 5 Bit arbeiten. (2^5 = 32 Zeichen) Also 5 ungenutzt?
Nicht wirklich, mir fiel spontan noch das Leerzeichen und diverse Interpunktionszeichen ein, die 5 zusätzlichen Plätze sind schnell vergeben.
Nimmt man das Vorzeichen noch mit dazu kommen wir auf 50 Bit und damit lassen sich exakt 10 Zeichen in einer Zahl kodieren. Ein Listeneintrag nimmt 10 Bytes weg, dafür haben wir 10 Zeichen. Klingt fair, ist es allerdings nicht, da wir lediglich mit 5 statt 8 Bit arbeiten müssen.
Immerhin etwas. Das nächste Problem war die Frage wie kommt man vom Tastencode zum Zeichen? Dazu habe ich mir eine kleine Proof-of-Concept Lookup Tabelle angelegt, die in etwa so aussieht {76,66,56,46,36,26} und den Tasten A B C D E F entspricht. Die Position innerhalb der Tabelle entspricht dann dem Zeichenindex.
Wird die 66 gedrückt, ist dies unser B. Es steht an zweiter Stelle und bekommt den Index 2. Usw.
Als nächstes wird die 15 Stellen Zahl, also unsere 50 Bits zusammengesetzt. Das sollte durch Maskierung und Bitschieberei geschehen. Maskierung ist durch die Binäroperatoren im base Modus möglich, Verschiebung durch Multiplikation mit 2er Potenzen. Das muß ich mir noch genauer anschauen, insbesondere das letzte Bit im Vorzeichen muß gesondert behandelt werden. Zur Not erstmal mit 45 Bit probieren.
Die Dekodierung geschieht analog und die Ausgabe über die berüchtigte Kette:
C=1=>Locate A,B,"A"
C=2=>Locate A,B,"B"
C=3=>Locate A,B,"C"
C=4=>Locate A,B,"D"
C=5=>Locate A,B,"E"
C=6=>Locate A,B,"F"
Soweit meine Ideen zum Thema, bevor ich weitergrübel die Frage an euch, was gibts zu verbessern, wo habe ich Denkfehler drin?
Danke!