Ich beziehe mich hier auf meine Erfahrungen mit dem CGF-9850GC Plus.
Ich möchte benutzerdefinierte Daten in Listen abspeichern und habe angefangen, den zur Verfügung stehenden Speicherplatz zu analysieren.
Legt man eine Liste mit einem Element an, belegt sie laut Speicher Info 10 Bytes. 2 Elemente 20 Bytes usw.
Es stehen offenbar pro Listenelement 10 Bytes oder 80 Bit Speicher zur Verfügung. Aber wie kommt man dran?
Die erste Idee war einfach, man kodiert den Inhalt in eine Dezimalzahl und speichert sie ab. Leider führt ein 2^80 List 1[1] zu einem Problem. Die Darstellung wird in Fließkomma geändert und es kommt zu Informationsverlust. Das Maximum, das ohne Verlust gespeichert werden konnte war 2^33, also rund 4 Byte. Wozu werden nun die restlichen 6 Byte benutzt und wie kann man dort rankommen? Ich würde mich über Tricks und Tipps freuen!
Mein Ziel ist es, Kartendaten für ein Spiel möglichst effizient in Listen abzulegen. Die Daten stehen in der Form von z.B. 15x6 * 4 Bit zur Verfügung. Das entspricht 360 Bit pro Karte und dafür würde ich mit meinen 33 Bit pro Tabelleneintrag 11 Einträge pro Karte benötigen. Das ist nicht viel, aber trotzdem alles andere als Effizient.
Vielen Dank schonmal für eure Hinweise!
Edit:
Durch fleißiges Lesen im Forum habe ich nun die Complexen Zahlen entdeckt und komme damit auf stolze 66 Bit. Theoretisch.
2^33+2^33i A funktioniert tadellos. 2^33+2^33i List1[1] bringt einen Syn Error. Verdammt! Listen können keine komplexen Zahlen verwalten?
Damit wäre ich sonst schon bei 66 der 80 Bit. Aber leider klappt es nicht..
Edit2:
Offenbar speichert der CFX 15 Stellen genau, siehe http://www.pageofmarco.de/cfxmmapfp.php
Damit käme ich immerhin auf ~49 Bit, da 2^49 < 10^15. Das wären 49 der 80 Bit. Bzw 60 der 80 Bit, da in BCD gespeichert wird (15x4 Bit = 60)...
Ein Test ergab jedoch, daß dies nicht funktioniert? Man gebe folgendes ein:
123456789012345 A
A - 123450000000000
Ergebnis ist 6789000000 statt 6789012345!