Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Listen Effizient nutzen / mehr als 33 Bit?

Hilfe beim Programmieren in Casio Basic.

Listen Effizient nutzen / mehr als 33 Bit?

Beitragvon neobusy » Di 26. Okt 2010, 11:52

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!
neobusy
 
Beiträge: 6
Registriert: Di 26. Okt 2010, 11:40
Taschenrechner:

Re: Listen Effizient nutzen / mehr als 33 Bit?

Beitragvon elias.koegel » Di 26. Okt 2010, 18:00

Doch, das stimmt schon, dass der TR 15 Stellen speichert, +2 Stellen für Exponent und noch bissl was anderes. Außerdem speichert der TR in BCD, also 4 Bit pro Ziffer, das wären dann schonmal 68 Bit. Der Rest geht für sonstige Informationen drauf, wie Vorzeichen, Vorzeichen vom Exponent usw. Hier hatte ich schonmal versucht, möglichst effizient Texte in Listen abzulegen. 7 Buchstaben passen problemlos in ein Listen oder auch Matrixelement.
Mit Complexen Zahlen kommst du in diesem Fall nicht besser. Bleib bei den Dezimalen.
Benutzeravatar
elias.koegel
 
Beiträge: 296
Registriert: Mo 8. Dez 2008, 18:16
Taschenrechner:

Re: Listen Effizient nutzen / mehr als 33 Bit?

Beitragvon cfxm » Di 26. Okt 2010, 18:19

cfxm
 
Beiträge: 739
Registriert: Mi 1. Apr 2009, 19:39

Re: Listen Effizient nutzen / mehr als 33 Bit?

Beitragvon neobusy » Di 26. Okt 2010, 18:58

Das Problem mit den abgeschnittenen Stellen hat sich geklärt. Der 9850GC Plus nutzt die selbe Genauigkeit bei der Eingabe wie zur Ausgabe, also 10 Stellen.
Schreibt man es folgendermaßen, klappt es auch:

123456789000000->A
A+12345->A
A-123450000000000

Es erscheint 6789012345.

Ja, ich habe alle Tutorials gelesen und der Trick mit 0.1Getkey für die Zahlen von 0 - 9 ist wirklich genial!
neobusy
 
Beiträge: 6
Registriert: Di 26. Okt 2010, 11:40
Taschenrechner:


Zurück zu Casio Basic (Alle Modelle, die dies unterstützen)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste