[Brainfuck] Grundlegende Fragen

Irgendjemand_1

Erfahrenes Mitglied
Hiho.
Ich hab mir grad mal aus Spaß Brainfuck angeschaut.
Hier gibt's ja bestimmt n paar die das auch schonmal ausprobiert haben ;)
Ich hätte da mal eine Frage ...
Wenn ich jetzt, sagen wir mal die Zahl 4321 ausgeben möchte (bei 8-Bit), müsste ich dann etwa in jeden Byte die Ziffern 4 bzw 3 bzw 2 bzw 1 schreiben und diese dann nacheinander ausgeben?
Und kann man irgendwie die ASCII-Ausgabe ausschalten (IDE-Abhängig?), damit man anstatt den ASCII-Werten einfach Zahlen ausgespuckt bekommt? :eek: Wäre ja doof, wenn man für die Zahl 255 3 Bytes bräuchte, obwohl man diese ja in einem Byte darstellen kann. Bei 64 Bit wäre das ganze ja noch schlimmer, dann vergeudet man ja noch viel mehr Speicherplatz ;)
 
Wenn ich jetzt, sagen wir mal die Zahl 4321 ausgeben möchte (bei 8-Bit), müsste ich dann etwa in jeden Byte die Ziffern 4 bzw 3 bzw 2 bzw 1 schreiben und diese dann nacheinander ausgeben?
Was meinst du mit „in jedem Byte“? In welcher Form liegt die Zahl 4321 überhaupt in deinem Programm vor?

Und kann man irgendwie die ASCII-Ausgabe ausschalten (IDE-Abhängig?), damit man anstatt den ASCII-Werten einfach Zahlen ausgespuckt bekommt? :eek:
Nein, das wäre ja zu einfach ;-) Das ist aber wenn dann ein Feature des Interpreters/Compilers, nicht der IDE.

Grüße,
Matthias
 
Was meinst du mit „in jedem Byte“? In welcher Form liegt die Zahl 4321 überhaupt in deinem Programm vor?
In gar keiner, das war nur ein Beispiel ;)
Mit "In Jedem Byte" meine ich nur die 4 Bytes für jeweils eine Ziffer. Nicht etwa alle 30.000 :p
Ich müsste ja im erstem Byte die 4 gespeichert haben, im 2. die 3, ...
Und dann nacheinander alle ausgeben.
Aber das ist doch extrem umständlich, oder?


Nein, das wäre ja zu einfach ;-) Das ist aber wenn dann ein Feature des Interpreters/Compilers, nicht der IDE.
Hm, das heißt bei zB der Zahl 11 hätte ich das selbe Problem wie mit der Zahl 4321? Obwohl ein Byte ja eigentlich ausreicht, um 256 darzustellen.
 
Ich müsste ja im erstem Byte die 4 gespeichert haben, im 2. die 3, ...
Und dann nacheinander alle ausgeben.
Aber das ist doch extrem umständlich, oder?
Wenn dir nacheinander ausgeben zu umständlich ist, dann schlag doch eine einfachere Methode vor. Mir ist zumindest keine bekannt. Wenn du eine Zahl auf ein Blatt Papier schreibst, schreibst du doch auch die Ziffern hintereinander auf, oder etwa nicht?

Hm, das heißt bei zB der Zahl 11 hätte ich das selbe Problem wie mit der Zahl 4321? Obwohl ein Byte ja eigentlich ausreicht, um 256 darzustellen.
Es ist zwar schön und gut, dass sich 255 (nicht 256) in einem Byte darstellen lässt. Allerdings ist das nicht die Darstellung, die du für die Ausgabe haben möchtest. Also musst du eine Umwandlung vornehmen. Das ist in etwa vergleichbar mit einem Bild, das (verlustfrei) komprimiert abgespeichert wurde – es ist zwar schön und gut, dass man nur z.B. 10kB braucht, um die Bilddaten zu speichern, allerdings muss man zum Anzeigen des Bildes die unkomprimierte Fassung wiederherstellen, die deutlich mehr Speicher belegt. So ist das nun mal :)

Grüße,
Matthias
 
Wenn dir nacheinander ausgeben zu umständlich ist, dann schlag doch eine einfachere Methode vor. Mir ist zumindest keine bekannt. Wenn du eine Zahl auf ein Blatt Papier schreibst, schreibst du doch auch die Ziffern hintereinander auf, oder etwa nicht?
Naja ich finde Brainfuck allgemein sehr umständlich :)
Aber es macht halt Spaß.
Nur würde es eben mehr Spaß machen, Zahlen, die größer als 9 sind, trotzdem noch in einem Byte darstellen zu können :p


Es ist zwar schön und gut, dass sich 255 (nicht 256) in einem Byte darstellen lässt. Allerdings ist das nicht die Darstellung, die du für die Ausgabe haben möchtest. Also musst du eine Umwandlung vornehmen. Das ist in etwa vergleichbar mit einem Bild, das (verlustfrei) komprimiert abgespeichert wurde – es ist zwar schön und gut, dass man nur z.B. 10kB braucht, um die Bilddaten zu speichern, allerdings muss man zum Anzeigen des Bildes die unkomprimierte Fassung wiederherstellen, die deutlich mehr Speicher belegt. So ist das nun mal :)
Okay, stimmt 255. Der Vergleich ist zwar schön und gut aber eigentlich auch falsch ;)
In der komprimierten Bilddatei sind die Informationen ... man könnte sagen verschlüsselt.
In Brainfuck handelt es sich nur um eine andere Darstellung der Zahlen ;) Sie werden ja nicht verändert, nur anders geschrieben (eben die zugehörigen ASCII-Zeichen).
Aber Speicherverlust ist es auf jeden Fall.

Meine Fragen wären damit wohl beantwortet. Danke dir ;)

Edit: Aber was bringt es dann, wenn man das ganze auf 16 Bit stellt?
Dann wiederholt sich die ASCII-Tabelle ein paar mal, aber die Werte ändern sich kein Stück? Okay, man kann dann intern im Programm auf bis zu 60.000 (oder so) zugreifen, aber mir verschließt sich der Sinn der Sache oO
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück